C++ のプロジェクトで gnu autotools を使用しています (autotools 構成は eclipse cdt によって自動的に生成されますが、これは問題ではないと思います)。私は LLVM ライブラリを使用していますが、現在、リンカー フラグの順序に関する問題に直面しています。
基本的に、プロジェクトをビルドするとき、eclipse は「make」を実行します。Make は多くのコマンドを実行しますが、最後に g++ コンパイラを次のように実行します。
g++ -DPACKAGE_NAME=\"test\" -DPACKAGE_TARNAME=\"test\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"test\ 1.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"test\" -DVERSION=\"1.0\" -I. `llvm-config --cppflags --ldflags --libs core` -g -O2 -MT test.o -MD -MP -MF .deps/test.Tpo -c -o test.o test.cpp
mv -f .deps/test.Tpo .deps/test.Po
そしてリンカー:
g++ `llvm-config --cppflags --ldflags --libs core` -g -O2 -o a.out test.o
問題は、引数「test.o」が行の先頭にない場合、リンカーが失敗することです。したがって、次のようにする必要があります。
g++ test.o `llvm-config --cppflags --ldflags --libs core` -g -O2 -o a.out
Makefile.am または gnu autotools の構成ファイルで変更するにはどうすればよいですか?