获取gcc在调用链接器时使用的默认链接配置
我正在使用CodeSorcery arm eabi gcc工具链,使用ld与gcc分离时遇到问题 如果我让获取gcc在调用链接器时使用的默认链接配置,gcc,linker,arm,Gcc,Linker,Arm,我正在使用CodeSorcery arm eabi gcc工具链,使用ld与gcc分离时遇到问题 如果我让gcc调用ld,我可以编译我的简单程序并链接它 这不成问题 g++ test.cpp; # Works 由于缺少符号,此操作不起作用 g++ -c test.cpp ld -o test crti.o crtbegin.o test.o crtend.o crtn.o -lgcc -lc -lstdc++; # Fails 注意,我正在将gcc库添加到ld命令中 我错过了什么 另外,如
gcc
调用ld
,我可以编译我的简单程序并链接它
这不成问题
g++ test.cpp; # Works
由于缺少符号,此操作不起作用
g++ -c test.cpp
ld -o test crti.o crtbegin.o test.o crtend.o crtn.o -lgcc -lc -lstdc++; # Fails
注意,我正在将gcc库添加到ld
命令中
我错过了什么
另外,如果有更好的方法使配置ld使用默认的
gcc
链接?最简单的方法是让gcc/g++驱动一个单独的链接:
g++ -c test.cpp # compile
g++ -o test test.o # separate link
如果需要传递链接器选项,可以使用-Wl
:
g++ -o test test.o -Wl,-somelinkeroption,arg
@R Samuel Klatchko给出了最好的建议,但是如果您真的想看看gcc/g++正在使用的链接是什么,请使用
-v
它显示用于搜索头文件和库的完整目录路径、预定义的预处理器符号以及用于链接的对象文件和库
您可能想了解一下使用等级库文件: