我最近发现了 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
Run Code Online (Sandbox Code Playgroud)
对于链接:
#-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,
Run Code Online (Sandbox Code Playgroud)