gpt4 book ai didi

c++ - 与 clang++ 和 scons 链接的正确方法

转载 作者:太空狗 更新时间:2023-10-29 21:23:02 24 4
gpt4 key购买 nike

我正在尝试调整现有的 scons 构建系统以使用 clang++ 而不是 g++。当使用 -O0 或 -O2 时——两者都不会输出 llvm IR——一切顺利,也就是说,构建完成没有错误。当使用 -O4 编译为 llvm 字节码以允许链接时间优化时,构建在最终链接上失败。

我搜索了很多地方,但我不清楚如何解决这个问题,要么直接在命令行上,要么在我的 SConstruct 文件中知道。

注意:设置 env['LINK'] = "/path/to/llvm-link" 会导致我的所有依赖项检查失败。

注意:将-Xlinker "-plugin"-Xlinker "/usr/lib/LLVMgold.so" 添加到命令中效果很好。所以,问题是如何根据 SConstruct 中 clang 的选择添加这个。

$ /usr/sbin/distcc clang++ -o build/release/filex.o -c -std=c++11 -march=core-avx-i -W -Wall -O4 \
-DHAVE_LLVM=0x0303 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS \
-D__STDC_LIMIT_MACROS -D_GNU_SOURCE=1 -D_REENTRANT -DHAVE_CONFIG_H -D_X11 \
-DFIFODIR='"/var/run/dir"' -I. -Isrc -I/usr/include -I/usr/include/SDL src/filex.cpp
...
$ ar rc build/release/libfile2.a build/release/filea.o build/release/tools/fileb.o
$ ranlib build/release/libfile2.a
...
$ /usr/sbin/distcc clang++ -o mybinary -pthread build/release/file1.o \
build/release/libfile2.a ... -L/usr/lib -lLLVMBitWriter -lLLVMX86Disassembler \
-lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMMCParser \
-lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMJIT \
-lLLVMRuntimeDyld -lLLVMExecutionEngine -lLLVMCodeGen -lLLVMObjCARCOpts -lLLVMScalarOpts \
-lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMMC \
-lLLVMObject -lLLVMCore -lLLVMSupport -lz -lffi -ldl -lm -lboost_iostreams -lSDL \
-lSDL_net -lpthread -lboost_system -lpangocairo-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 \
-lcairo -lfontconfig -lfreetype -lboost_program_options -lboost_regex -lSDL_ttf \
-lSDL_mixer -lvorbisfile -lSDL_image -lX11

/usr/sbin/ld.gold: error: build/release/file1.o:1:3: invalid character
/usr/sbin/ld.gold: error: build/release/file1.o:1:3: syntax error, unexpected $end
/usr/sbin/ld.gold: error: build/release/flie1.o: not an object or archive

最佳答案

关键是将 -Wl,-plugin,/path/to/LLVMgold.so 附加到 LINKFLAGS 而不是 -Xlinker... 语法。

关于c++ - 与 clang++ 和 scons 链接的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19235234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com