-Wl,--start-group
GCC では、リンカー フラグを使用して、-Wl,--end-group
循環依存関係を持つライブラリとのリンクの問題を解決できます。clang でも同じことをしたいのですが、この機能はlld バージョン 3.2 で削除されたようです。どうすればいいのですか?
質問する
7970 次
3 に答える
4
LLVM 3.2のリリース ノートには、次のように記載されています。
llvm-ld と llvm-stub は削除されました。llvm-ld 機能は部分的に llvm-link | に置き換えることができます。選ぶ | {llc | as, llc -filetype=obj} | ld、または完全に Clang に置き換えられます。
デフォルトでは、clang はシステム リンカを使用しているようです。たとえば、Linux では GNU ld を使用します。
$ clang --version
clang version 3.2 (branches/release_32 170558)
...
$ clang -Wl,--verbose
GNU ld (GNU Binutils; devel:gcc / openSUSE_12.3) 2.24.0.20140403-196
...
これは、GCC と同様に -Wl,--start-group と -Wl,--end-group を使用できることを示唆しています。
于 2014-10-14T13:26:44.240 に答える
3
私は循環依存のファンではありません:)しかし、ここでは、いくつかのライブラリを2回リンクすることでこのケースを処理すると言う人もいます。試したことはありませんが、コードのフットプリントが増える可能性があります。
$(CC) -o myApp -lfoo -lbar -lfoo
これがclangで機能するかどうかはわかりませんが、試してみる価値はあります。
最善の解決策は、循環依存関係を削除することです。これにより、将来さらに多くの問題が発生する可能性があります。
于 2014-10-13T19:52:23.647 に答える