Automake和标准共享库

时间:2010-01-18 02:06:43

标签: shared-libraries automake

如何强制automake创建标准的共享库,而不是libtoolized?通常,我会创建abc.so,它以完整路径引用并加载到主程序中。有没有办法强制AM做同样的事情?如果我将其列为_LIBRARY,则automake会抱怨:'abc.so' is not a standard library name; did you mean 'libabc.a'

只是为了澄清:是的,我只需要.so支持 - 没有静态。是的,我想要一个自定义文件名。

4 个答案:

答案 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)

IIRC,除了你链接libltdl之外,在libtool的帮助下创建的库没有什么特别之处。如果您不想使用libtool,您可以选择并且不太关心可移植性,那么您可以自由使用不带libtool的automake。我建议使用libtool的强大功能。

实际上,我甚至不知道_LIBRARY有什么用处,没有在the manual/Linking section中找到它。