如何强制automake创建标准的共享库,而不是libtoolized?通常,我会创建abc.so
,它以完整路径引用并加载到主程序中。有没有办法强制AM做同样的事情?如果我将其列为_LIBRARY,则automake会抱怨:'abc.so' is not a standard library name; did you mean 'libabc.a'
只是为了澄清:是的,我只需要.so
支持 - 没有静态。是的,我想要一个自定义文件名。
答案 0 :(得分:7)
libtool 是要走的路。如果需要自定义名称,请将-module
选项添加到_LDFLAGS,例如:
plugindir= /some/where
plugin_LTLIBRARIES= abc.la
abc_la_LDFLAGS= -module
答案 1 :(得分:6)
Automake不知道如何构建共享库,因为没有可移植的方法。如果您需要使用Automake的共享库,则必须使用Automake + Libtool。请注意,默认情况下,您可以轻松配置libtool,以便不在LT_INIT([disable-static])
中构建任何静态库(configure.ac
)。
答案 2 :(得分:1)
libtoolized库是一个或多个标准库的包装器。 您可以在运行“make”后在“.libs”中找到这些库,或在运行“make install”后在“$ prefix / lib”中找到这些库。
在Linux机器上,您最终应该找到一个名为“libabc.so”的文件。
答案 3 :(得分:0)
实际上,我甚至不知道_LIBRARY有什么用处,没有在the manual/Linking section中找到它。