3

我正在尝试编译 Niotso,但是在从源代码构建时遇到了问题。

我想我可能错过了一些明显的东西,所以如果有人知道我可能做错了什么,请告诉我

c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw3
2/bin/ld.exe: skipping incompatible c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32
/4.8.1/../../../../x86_64-w64-mingw32/lib/libmsvcrt.a when searching for -lmsvcrt
c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw3
2/bin/ld.exe: skipping incompatible c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32
/4.8.1/../../../../x86_64-w64-mingw32/lib\libmsvcrt.a when searching for -lmsvcrt
c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw3
2/bin/ld.exe: skipping incompatible c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32
/4.8.1/../../../../x86_64-w64-mingw32/lib/libmsvcrt.a when searching for -lmsvcrt
c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw3
2/bin/ld.exe: cannot find -lmsvcrt
collect2.exe: error: ld returned 1 exit status
_deps\freetype\CMakeFiles\freetype_shared.dir\build.make:323: recipe for target
'../_dist/windows/freetype.dll' failed
mingw32-make[2]: *** [../_dist/windows/freetype.dll] Error 1
CMakeFiles\Makefile2:77: recipe for target '_deps/freetype/CMakeFiles/freetype_s
hared.dir/all' failed
mingw32-make[1]: [_deps/freetype/CMakeFiles/freetype_shared.dir/all] Error 2
Makefile:74: recipe for target 'all' failed
mingw32-make: [all] Error 2
4

1 回答 1

4

您的 MinGW 工具链分发是单一目标的,并且针对 64 位。可能在 Niotso 的构建系统中的某个地方-m32包含了强制 32 位编译模式的开关。但是由于您的工具链不包含 32 位版本,libmsvcrt.a它抱怨它确实找到了 64 位版本libmsvcrt.a,但它想要 32 位版本,因此跳过了前者。

您有 3 个选项:

  1. 查看 Niotso 的构建系统(无论它是什么), -m32并尝试消除它,然后您将生成 Niotso 的 64 位二进制文​​件;
  2. 将 MinGW 分发更改为单目标(针对 32 位),然后您将生成 Niotso 的 32 位二进制文​​件;
  3. 将 MinGW 分发更改为双目标(同时针对 32 位和 64 位),然后您将再次生成 Niotso 的 32 位二进制文​​件;

    注意:我知道的唯一双目标工具链是 TDM-GCC 和基于 SJLJ 的 MinGW-w64。

于 2013-10-13T14:40:45.263 回答