我在 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 的任何配置文件中更改它?