MinGW GCC - 对'atexit'的未定义引用

时间:2013-11-06 13:41:32

标签: c gcc linker mingw atexit

我正在尝试将一个大型项目与MinGW的GCC 4.8.1链接到一个x86目标。 我像这样调用链接器

D:\MyGCCPath\gcc -L [LIBPATHS]  -nostdlib -Wl,-Map,D:\PathToMapFile.map,--emit-relocs [OBJECTFILES AND LIBS] -lmsvcrt -lgcc -o D:\PathToMyOutputFile

通过这个调用,我得到了这个链接器rror:

libgcc.a(__main.o):(.text+0x5a): undefined reference to `atexit'

我尝试了不同的msvcr版本(100和90),但这是一次绝望的尝试,因为我对这个问题不是很熟悉。我正在使用MinGW提供的正确库。 有什么办法可以解决这个错误吗?

2 个答案:

答案 0 :(得分:4)

您正在与-nostdlib进行关联,而atexit()是来自stdlib.h的功能。

根据GCC Link Options

  

-nostdlib

     

链接时请勿使用标准系统启动文件或库。没有启动文件,只有您指定的库被传递给链接器,并且忽略指定系统库链接的选项,例如-static-libgcc-shared-libgcc

答案 1 :(得分:0)

按照命令行中使用的顺序检查库,因此请使用-lgcc -lmsvcrt