1

我正在尝试使用 MINGW64 制作 ZIMPL,但出现以下错误:

myname@... MINGW64 ~/scipoptsuite-3.2.1/zimpl-3.3.3
$ make
-> generating library lib/libzimpl-3.3.3.mingw.x86_64.gnu.opt.a
-> linking bin/zimpl-3.3.3.mingw.x86_64.gnu.normal.opt
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible lib/libgmp.a when searching for -lgmp
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible lib\libgmp.a when searching for -lgmp
....
....
....
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmsvcrt
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:170: bin/zimpl-3.3.3.mingw.x86_64.gnu.normal.opt] Error 1

在 ZIMPL 的自述文件中它说:

您无法编译的最可能原因是 gmp.h 或 zlib.h 不在您的包含路径 (-I) 中,或者 libgmp.a 或 libz.a 不在您的库路径 (-L) 中。

但我有这些文件分别存在于 C:\msys64\mingw64\include 和 C:\msys64\mingw64\lib 中。这不是正确的位置吗?

我的问题: - 这个错误是什么意思?- 提到的文件的正确位置是什么?- 如何将这些文件包含到正确的包含和库路径中?是 -I/mingw64/include 和 -L/mingw64/lib 吗?

先感谢您。

4

1 回答 1

1

这些错误消息的一个原因可能是您的 GMP 库是为您尝试链接到的另一个体系结构构建的(32 位与 64 位)。看看这个问题:跳过不兼容.../找不到

您也可以尝试使用此处建议的不同链接器:MinGW-W64 链接器在搜索第三方静态库时跳过不兼容的文件

我认为您指定的路径已经正确,只是那里的库不适用于您的二进制文件。如果您可以不使用 GMP,我建议您尝试使用选项编译 ZIMPL GMP=false

于 2016-09-19T07:35:14.967 回答