2011-07-27 9 views
2

Automakeを使用して共有ライブラリを--as-neededにリンクするにはどうすればよいですか?私はLDFLAGSにフラグを追加しようとしたとき、私はのように、いわゆるlibtoolを見た:共有ライブラリを--as-neededとautomakeでリンクするにはどうしたらいいですか?

そうのようなGCCへの呼び出しになり
/bin/bash ../../libtool --mode=link ... -Wl,--as-needed ... dependencies 

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

をしかし、それは間違っているためです。

  • Libtoolでこれを行う方法はありますか?

  • また、Libtoolを使わずにAutomakeを使って共有ライブラリを構築する方法はありますか? (私は過去に様々な他の理由のためにlibtoolはでイライラしてきた...)

Debianの人々はあまりにもこの問題に(bug report)を走ったようだが、私はこの問題を解決できるようにしたいのですが私のシステムに迷惑をかけるのではなく、私のプロジェクトのために(私が修正を誤解しない限り)。

+0

私は与えられた、物事が変化したことを期待していましたあなたのリファレンスは2006年のものであり、 'libtool' 1.5と言及されていましたが、そうではないようです:http://sigquit.wordpress.com/2011/02/16/why-asneeded-doesnt-work-as-expected-for-your- libraries-on-your-autotools-project/ –

+1

ええ、私はlibtool 2.2.6を実行しています。 –

答えて

1

Makefile.amで修正できます。基本的にmy question hereの答えと同じですが、-(no-)whole-archiveの代わりに-(no-)as-neededを使用する必要がある点を除きます。

+0

これを拡張できますか?問題は、それをLDFLAGSに入れても機能しないということです。 –

+0

さて、問題はコマンドラインに間違った順序で入れられているようだった。コマンドラインで共有ライブラリ名をブラケットすることで、動作のオン/オフを切り替えるオプションで、LDFLAGSで動作するはずです。それとも私は完全に誤解したことがありますか? – ptomato

+1

問題は、libtoolに正しい順序でフラグを渡すと、libtoolがそれらを並べ替えることです。 –

0

本当に不満足な問題、特にパッケージ保守の問題。

Debianは、パッチのlibtoolにサポートして構築されており、Debianパッケージ

dh_autoreconf --as-needed 

それとも、あなたがCDBSを使用している場合に、この問題を修正しました:

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

DEB_DH_AUTORECONF_ARGS += --as-needed 
関連する問題