7

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

澄清一下:是的,我只需要.so支持——不需要静态。是的,我想要一个自定义文件名。

4

4 回答 4

7

libtool是要走的路。如果您想要自定义名称,请将-module选项添加到 _LDFLAGS,例如:

plugindir= /some/where  
plugin_LTLIBRARIES= abc.la
abc_la_LDFLAGS= -module
于 2011-06-19T18:28:54.703 回答
6

Automake 不知道如何构建共享库,因为没有可移植的方式来做到这一点。如果要与 Automake 共享库,则必须使用 Automake+Libtool。请注意,您可以轻松地将 libtool 配置为默认情况下不构建任何静态库(LT_INIT([disable-static])在您的 中configure.ac)。

于 2010-01-18T10:31:43.040 回答
1

libtoolized 库是一个或多个标准库的包装器。您可以在运行“make”后在“.libs”中找到这些库,或者在运行“make install”后在“$prefix/lib”中找到这些库。

在 Linux 机器上,您最终应该会找到一个名为“libabc.so”的文件。

于 2010-01-20T14:03:26.710 回答
0

IIRC,除非您链接到 libltdl,否则在 libtool 的帮助下创建的库没有什么特别之处。如果你不想使用 libtool,你有选择的权力,并且不太在意可移植性,那么你可以在没有 libtool 的情况下自由使用 automake。我建议改用 libtool 的强大功能。

实际上,我什至不知道 _LIBRARY 有什么用,在手册/链接部分没有找到它。

于 2010-01-18T02:27:12.047 回答