2016-08-11 27 views
0

我试图让ZIMPL使用MINGW64,但我得到了以下错误:ZIMPL跳过不兼容

[email protected] 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的README它说:

The most likely reason that you can't compile, is that gmp.h or zlib.h are not in your include path (-I) or that libgmp.a oder libz.a are not in your library path (-L).

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

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

预先感谢您。

回答

0

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

您也可以尝试使用不同的连接器的建议位置:MinGW-W64 linker skipping incompatible files when searching for third-party static libraries

我想你指定的路径已经是正确的,它只是在那里的库不工作你的二进制。如果你可以没有GMP,我建议你尝试使用选项GMP=false来编译ZIMPL。

+0

谢谢你的回答。 我试着设置'GMP = false',但后来发现错误'ZIMPL需要GMP链接。使用ZIMPL = false或GMP = true。 Stop.'所以我想这不是一个选项... 使用pacman -R mingw-w64-i686-gmp我删除了32位版本的gmp(我安装了32位和64位版本),但仍然没有加工。 我想尝试另一个链接器,但没有找到如何做到这一点? –

+0

您可以通过设置选项VERBOSE = true来检查make命令的输出。 恐怕我帮不了你了。在MinGW中编译通常是一团糟。我只能推荐一个完整的Linux环境。 – mattmilten