4

私はautomakeを使用しており、次のようなlibtool呼び出しを取得しています:

/bin/sh ../libtool --tag=CC --mode=link gcc -o test_foo test_foo.o -lA -lB -lC -lA -lB -lC

ライブラリ (私の制御範囲外) には循環依存関係があり、複数回言及する必要があることに注意してください。残念ながら、libtool はライブラリに対する複数のリクエストを 1 つのリクエストにまとめて実行しているようです。

gcc -o test_foo test_foo.o -lA -lB -lC

ライブラリの 2 番目のパスがなくなったことに注意してください。リンカー エラーが大量に発生します。そのgccコマンドラインを追加の-lフラグで手動で実行すると、機能します。

gcc に要求したすべてのライブラリを libtool に渡すにはどうすればよいですか?

4

1 に答える 1

6

gcc に要求したすべてのライブラリを libtool に渡すにはどうすればよいですか?

私はそれを行う方法がわかりません。ただし、GNU-ld (または gold) を使用するシステムを使用している場合は、次の方法でも同じ結果が得られることに注意してください。

-Wl,--start-group -lA -lB -lC -Wl,--end-group

おそらく、libtool はこれらを無傷のままにしますか? 残念ながら、libtool 2.2.6b は-Wl,--end-groupすべてのライブラリの前に移動します ;-(

このグロスハックはそれを行います:

-Wl,--start-group,-lA,-lB,-lC,--end-group

(私はそれlibtoolが 99% の確率で間違っていることに気付き、疫病のようにそれを避けようとします。)

于 2012-04-07T18:43:54.977 に答える