静态和共享库的Autotools设置

时间:2015-03-10 19:08:56

标签: makefile autotools

我们有一个庞大的代码库,我将转换为自动工具以帮助定位多个平台/配置。基本上,我们有:

|-- configure.ac
|-- Makefile.am
|-- dependency1
|   `-- Makefile.am
|-- dependency2
|   `-- Makefile.am
`-- dependency3
    `-- Makefile.am

依赖项文件夹在许多项目中都很常见,因此Makefile.am个文件会创建libdependencyX.la个文件。在根Makefile.am中,然后我使用LIBADD组合所有内容以创建最终的共享库。这一切都有效。

我们需要创建库的共享和静态版本。我该怎么做?所有依赖项都只使用LTLIBRARIES来制作所有内容。

原始解决方案只是一个巨大的Makefile,它创建了一系列.o个文件,然后最终构建了结果.so.a

更新2015-03-11

我遇到的问题是我可以获得静态或共享,但不能同时获得。对于最终的库,根Makefile.am看起来像这样。

lib_LTLIBRARIES = libroot.la
libroot_la_SOURCES = root.c
libroot_la_LIBADD = dependency1/libdependency1.la \
                    dependency2/libdependency2.la \
                    dependency3/libdependency3.la
libroot_la_LDFLAGS = -shared

-shared切换为-static会给我.a,但我怎样才能同时获得这两者? --enable-shared / --enable-static似乎无法改变任何事情。

1 个答案:

答案 0 :(得分:1)

似乎我的问题在于libretto_la_LDFLAGS行。将其遗漏并使用make install会在指定的前缀中同时提供.a和.so文件。