错误"未定义的引用"在MinGW中链接

时间:2014-06-30 04:59:26

标签: linker mingw

我使用object-file从源代码获得MinGW

但关于链接:

ld -o test.exe test.o

我收到错误,例如以下内容:

  

对printf的未定义引用

2 个答案:

答案 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的参数。 但是可执行文件的大小远远超过以前的文件大小。