我最近发现了 LLVM 的链接器,它因链接lld
速度非常快而受到称赞。事实上,我对其进行了测试,结果非常棒,与gold
.
但是,在谈到链接时优化时,我的知识是有限的。据我通过阅读互联网上的资料了解到,目标文件中产生了一些额外的代码,代表一些内部编译器结构,然后在链接阶段使用。因此,我担心的是链接时优化(及其好处)是否受此编译器/链接器组合的影响。我将不胜感激有关此事的一些解释!
我使用gcc
了版本9.2.0
和lld
版本10.0.0
。
我用于生成目标文件的命令:
/opt/gcc/9.2.0/bin/c++ -fPIE -flto -ffat-lto-objects -fuse-linker-plugin -m64 -O3 -g -DNDEBUG -o my_object.cpp.o -c my_source_file.cpp
对于链接:
#-fuse-ld=gold
/opt/gcc/9.2.0/bin/c++ -fPIE -flto -ffat-lto-objects -fuse-linker-plugin -m64 -pie -fuse-ld=gold -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -static-libstdc++ -static-libgcc -Wl,--threads -Wl,--thread-count,1
#-fuse-ld=lld
/opt/gcc/9.2.0/bin/c++ -fPIE -flto -ffat-lto-objects -fuse-linker-plugin -m64 -pie -fuse-ld=lld -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -static-libstdc++ -static-libgcc -Wl,--threads -Wl,