如何将带有--as-needed的共享库与automake链接?

时间:2011-07-27 23:23:12

标签: linker automake libtool

如何使用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),但我希望能够为我的项目解决这个问题,而不是弄乱我的系统(除非我误解了修复)。

3 个答案:

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