如何强制 automake 创建标准共享库,而不是 libtoolized 库?通常,我会创建abc.so
一个完整路径引用并加载到主程序中的文件。有没有办法强迫 AM 做同样的事情?如果我将其列为 _LIBRARY,automake 会抱怨:'abc.so' is not a standard library name; did you mean 'libabc.a'
澄清一下:是的,我只需要.so
支持——不需要静态。是的,我想要一个自定义文件名。
如何强制 automake 创建标准共享库,而不是 libtoolized 库?通常,我会创建abc.so
一个完整路径引用并加载到主程序中的文件。有没有办法强迫 AM 做同样的事情?如果我将其列为 _LIBRARY,automake 会抱怨:'abc.so' is not a standard library name; did you mean 'libabc.a'
澄清一下:是的,我只需要.so
支持——不需要静态。是的,我想要一个自定义文件名。
libtool是要走的路。如果您想要自定义名称,请将-module
选项添加到 _LDFLAGS,例如:
plugindir= /some/where
plugin_LTLIBRARIES= abc.la
abc_la_LDFLAGS= -module
Automake 不知道如何构建共享库,因为没有可移植的方式来做到这一点。如果要与 Automake 共享库,则必须使用 Automake+Libtool。请注意,您可以轻松地将 libtool 配置为默认情况下不构建任何静态库(LT_INIT([disable-static])
在您的 中configure.ac
)。
libtoolized 库是一个或多个标准库的包装器。您可以在运行“make”后在“.libs”中找到这些库,或者在运行“make install”后在“$prefix/lib”中找到这些库。
在 Linux 机器上,您最终应该会找到一个名为“libabc.so”的文件。
IIRC,除非您链接到 libltdl,否则在 libtool 的帮助下创建的库没有什么特别之处。如果你不想使用 libtool,你有选择的权力,并且不太在意可移植性,那么你可以在没有 libtool 的情况下自由使用 automake。我建议改用 libtool 的强大功能。