2011-07-27 56 views
2

如何使用Automake將共享庫鏈接到--as-needed?當我嘗試添加的標誌LDFLAGS,我看到libtool稱爲像這樣:如何使用automake將需要的共享庫鏈接到需要的庫?

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

導致調用GCC像這樣:

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

但是,這是錯誤的順序。

  • 有沒有辦法用Libtool做到這一點?

  • 或者有沒有一種很好的方式來建立使用Automake共享庫,但沒有Libtool? (我在Libtool程序受挫在過去各種其他原因......)

看來Debian的人遇到了這個問題太(bug report),但我希望能夠解決這個問題爲我的項目,而不是搞亂我的系統(除非我誤解了修復)。

+0

我希望,情況發生了變化,給你的參考是從2006年開始提到'libtool' 1.5,但它似乎不是:http://sigquit.wordpress.com/2011/02/16/why-asneeded-doesnt-work-as-expected-for-your-庫在你的自動工具項目/ –

+1

是的,我正在運行libtool 2.2.6。 –

回答

1

您可以在Makefile.am;基本上與my question here的答案相同,除了您需要使用-(no-)as-needed而不是-(no-)whole-archive

+0

你可以擴展一下嗎?問題是將它放入LDFLAGS不起作用。 –

+0

好吧,在我看來,問題在於它以錯誤的順序放入命令行。通過在命令行中使用包含打開和關閉行爲的選項括起共享庫名稱,在我看來它應該在LDFLAGS中起作用。還是我完全誤解了? – ptomato

+1

問題是,當我以正確的順序將標誌傳遞給libtool時,libtool將它們重新排序。 –

0

真的很令人沮喪的問題,特別是對於包裝維護。

的Debian已經內置支持補丁的libtool如果你正在使用CDBS修復Debian軟件包

dh_autoreconf --as-needed 

或者,這個問題:

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

DEB_DH_AUTORECONF_ARGS += --as-needed 
相關問題