如何使用Automake将共享库与--as-needed
链接?当我尝试将标记添加到LDFLAGS
时,我看到libtool
被调用为:
/bin/bash ../../libtool --mode=link ... -Wl,--as-needed ... dependencies
这导致了对GCC的调用:
gcc -shared ... dependencies ... -Wl,--as-needed ...
但这是错误的顺序。
有没有办法用Libtool做到这一点?
或者有没有一种很好的方法来使用Automake构建共享库但没有Libtool? (由于过去其他各种原因,我对Libtool感到沮丧......)
似乎Debian人也遇到了这个问题(bug report),但我希望能够为我的项目解决这个问题,而不是弄乱我的系统(除非我误解了修复)。
答案 0 :(得分:4)
您可以通过修改项目源中的ltmain.sh脚本来解决这个问题。您甚至可以将其添加为autotools bootstrapping的一部分,如: https://meego.gitorious.org/tracker/tracker/commit/cf2ca3414aeba146dceacc5ecd84765f4c08a06f
答案 1 :(得分:1)
您可以在Makefile.am
中修复它;基本上它与my question here的答案相同,除非您需要使用-(no-)as-needed
代替-(no-)whole-archive
。
答案 2 :(得分:0)
真的是一个令人沮丧的问题,特别是对于包维护。
Debian已经支持修补libtool并在debian包中解决这个问题
dh_autoreconf --as-needed
或者,如果你正在使用CDBS:
include /usr/share/cdbs/1/rules/autoreconf.mk
DEB_DH_AUTORECONF_ARGS += --as-needed