我使用object-file
从源代码获得MinGW
。
但关于链接:
ld -o test.exe test.o
我收到错误,例如以下内容:
对printf的未定义引用
答案 0 :(得分:1)
首先,你为什么直接使用ld?
以下内容摘自http://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html的“GCC and Make”教程。
单独编译和链接
上述命令将源文件编译为目标文件,并与其他目标文件(系统库)一起链接成可执行文件。您可以按如下两个步骤分离编译和链接:
// Compile-only with -c option
> g++ -c -Wall -g Hello.cpp
// Link object file(s) into an executable
> g++ -g -o Hello.exe Hello.o
注意g ++(如果使用C而不是C ++,则可以替换gcc)用于编译和链接。完全不使用ld。
使用g ++或gcc进行链接的好处是它会自动链接默认库,例如你需要为printf链接的库。
要与其他库链接,请使用-l参数指定库名称,如-lmylib。
答案 1 :(得分:1)
我们可以通过命令
查看编译器运行的命令c99 -v test.o
我们会得到一些文字。包含“COLLECT_CGG_OPTIONS”的所有字符串后面都是ld的参数。 但是可执行文件的大小远远超过以前的文件大小。