【发布时间】:2013-03-06 10:34:51
【问题描述】:
我正在使用 automake 构建一个 c++ 程序。它使用了许多我想动态链接的库。
不过,我想静态链接一个库。我不是在构建这个库,我有一个我想使用的第三方提供的 .a 文件。
在 configure.ac 或 Makefile.am 中是否有一种简单的方法可以指定此库必须静态链接,而对所有其他库保持正常的动态链接行为不变?
【问题讨论】:
标签: autotools
我正在使用 automake 构建一个 c++ 程序。它使用了许多我想动态链接的库。
不过,我想静态链接一个库。我不是在构建这个库,我有一个我想使用的第三方提供的 .a 文件。
在 configure.ac 或 Makefile.am 中是否有一种简单的方法可以指定此库必须静态链接,而对所有其他库保持正常的动态链接行为不变?
【问题讨论】:
标签: autotools
静态或动态链接的决定是由用户而非维护者做出的决定,因此尝试在 autotool 元文件中做出该决定是没有意义的。 如果用户想静态链接,最可靠的做法是确保链接器搜索到的目录中不存在动态库。
【讨论】:
我找到了答案。
它通过在 Makefile.am 中添加库路径来工作:
programname_LDADD = /usr/lib/libneeded.a
只有当路径完全是指定的路径时,这才有效。
【讨论】:
/usr/lib 中安装库,这将非常失败。为什么还要费心使用automake?