我正在尝试将一个大型项目链接到来自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通过这个调用,我得到了这个链接器错误:
libgcc.a(__main.o):(.text+0x5a): undefined reference to `atexit'我尝试了不同的msvcr版本(100和90),但这更像是一次孤注一掷的尝试,因为我不太熟悉这个问题。我使用的是MinGW提供的正确的库。有什么方法可以修复这个错误吗?
发布于 2013-11-06 21:47:58
您正在使用-nostdlib进行链接,而atexit()是来自stdlib.h的函数。
根据GCC Link Options的说法
-nostdlib
链接时不要使用标准的系统启动文件或库。不会将任何启动文件传递给链接器,只会将您指定的库传递给链接器,并忽略指定系统库链接的选项,如-static-libgcc或-shared-libgcc。
发布于 2015-08-20 15:41:59
库按照命令行中使用的顺序进行检查,因此请使用-lgcc -lmsvcrt。
https://stackoverflow.com/questions/19813659
复制相似问题