去年我在 MinGW 上构建了一些源代码,没有任何问题。现在,当我尝试使用另一个参数重新配置此源时,我得到了(config.log 中 libjansson-2.10 的 ./configure 的部分输出):
configure:3318: checking whether the C compiler works
configure:3340: gcc conftest.c >&5
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../crt2.o:(.text+0x34):
undefined reference to `signal'
...
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../crt2.o:(.text+0x89):
undefined reference to `_imp___iob'
...
以及其他未定义的引用。但是如果我创建这些旧的配置源,它们就会成功重建。
我卸载了旧的 MinGW 并下载了一个新的,检查了所有 dll、bin 和 dev 相关的复选框,但在不同的源上仍然出现相同的错误。我更改了 PATH 以删除除 C:\MinGW in;C:\MinGW\msys .0 in; 等之外的所有链接,但都是一样的。这是 PATH 或 pkg-config 的问题还是其他问题?
更新: 当我编译 Hello world 时,我遇到了同样的错误。
g++ -Wall -o2 -s -nodefaultlibs Hello.cpp -o Hello.exe
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../crt2.o:(.text+0x97): undefined reference to `signal'
我的问题出在存储此值的 LIBRARY_PATH 变量中:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\lib\x64;
C:\Program Files (x86)\Windows Kits\8.1\Include\um
C:\MinGW\msys\1.0\lib;
LD_LIBRARY_PATH 与 LIBRARY_PATH
当我删除它并重新启动计算机时,所有未定义的内容都消失了。