4

如何--as-needed使用 Automake 链接共享库?当我尝试将标志添加到 时LDFLAGS,我看到libtool这样调用:

/bin/bash ../../libtool --mode=link ... -Wl,--as-needed ... dependencies

这会导致像这样调用 GCC:

gcc -shared ... dependencies ... -Wl,--as-needed ...

但这是错误的顺序。

  • 有没有办法用 Libtool 做到这一点?

  • 或者有没有一种使用 Automake 但没有 Libtool 来构建共​​享库的好方法?(过去,由于其他各种原因,我一直对 Libtool 感到沮丧……)

似乎 Debian 的人也遇到了这个问题(错误报告),但我希望能够为我的项目解决这个问题,而不是弄乱我的系统(除非我误解了修复)。

4

3 回答 3

5

您可以通过修改项目源代码中的 ltmain.sh 脚本来为您的项目解决此问题。您甚至可以将其添加为自动工具引导的一部分,如: https ://meego.gitorious.org/tracker/tracker/commit/cf2ca3414aeba146dceacc5ecd84765f4c08a06f

于 2011-07-29T10:19:01.183 回答
2

你可以修复它Makefile.am;基本上它与我的问题的答案在这里相同,除了你需要使用-(no-)as-needed而不是-(no-)whole-archive.

于 2011-07-31T19:27:37.353 回答
0

真的是一个令人沮丧的问题,特别是对于包维护。

Debian 已内置支持修补 libtool 并在 debian 软件包中修复此问题

dh_autoreconf --as-needed

或者,如果您使用的是 CDBS:

include /usr/share/cdbs/1/rules/autoreconf.mk

DEB_DH_AUTORECONF_ARGS += --as-needed
于 2014-10-03T21:21:37.373 回答