我有2个文件:“test.o”和“testlib.a”两个文件都在同一个文件夹中
现在我想加入链接器。问题是必须将它们与“ld”命令联系起来!
那么有人能告诉我语法是怎么回事吗?
我试试这个,但它不起作用:
ld -I -o testprog test.o testlib.a
答案 0 :(得分:3)
让g ++为您处理所有细节 - 它将使用所有正确的参数调用ld
:
g++ -o testprog test.o testlib.a
如果要查看传递给ld
的命令,以便可以直接调用它,那么只需添加-v
标志:
g++ -v -o testprog test.o testlib.a
答案 1 :(得分:2)
如果您的程序不需要大多数程序使用的C ++运行时库部件,那么您所提供的内容将。如果要使用任何C ++运行时功能,则需要提供C ++启动代码和标准C ++库(例如,您的代码从main
开始,并且stdin
,{{1} },cin
的表和许多其他类似的东西初始化)。
没有理由直接使用atexit
。像Paul R说的那样,使用ld
进行链接。它知道如何做你需要的所有事情。只有当您构建操作系统(或内核模块)或其他不使用普通标准运行时库位的组件时,您才不想这样做。