我正在尝试将一个大型项目与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提供的正确库。
有什么办法可以解决这个错误吗?
答案 0 :(得分:4)
您正在与-nostdlib
进行关联,而atexit()
是来自stdlib.h
的功能。
-nostdlib
链接时请勿使用标准系统启动文件或库。没有启动文件,只有您指定的库被传递给链接器,并且忽略指定系统库链接的选项,例如
-static-libgcc
或-shared-libgcc
。
答案 1 :(得分:0)
按照命令行中使用的顺序检查库,因此请使用-lgcc -lmsvcrt
。