我编写了一个混合了Python3和C++的程序。我在Windows上使用boost python 1.62和mingw。到目前为止,我已经在很多机器上编译了C++python库,它一直运行良好。现在,我把源代码交给了一位同事,让他在自己的机器上安装,但编译失败了,mingw抱怨符号和"无法识别文件格式"的问题。
不过,我看到的是:在我的机器上,b2在编译开始时报告了这一点:
- 32位:否(缓存(
- 64位:是(缓存(
- arm:否(缓存(
- mips1:no(缓存(
- 电源:否(缓存(
- sparc:no(缓存(
- x86:是(缓存(
- 支持符号链接:是
在我同事的机器上,它看起来像这样:
- 32位:是(缓存(
- arm:否(缓存(
- mips1:no(缓存(
- 电源:否(缓存(
- sparc:no(缓存(
- x86:是(缓存(
- 支持符号链接:是
我很确定,这些问题与他的系统试图编译32位代码并试图将现有的64位代码链接到它有关。然而,问题是,它为什么要首先编译32位的代码?这台机器还不到一年,所以它肯定是64位的。然而,更重要的问题是,我如何说服机器使用64位进行编译?
顺便说一句,这是我的user-config.jam:
using python : 3.6 : C:\StreamTest\WinPython-64bit-3.6.6.2\python-3.6.6.amd64\python.exe
: C:\StreamTest\WinPython-64bit-3.6.6.2\python-3.6.6.amd64\include
: C:\StreamTest\WinPython-64bit-3.6.6.2\python-3.6.6.amd64\libs
: ;
您的同事肯定是在编译到32位,您可以添加参数-m64
,它应该强制mingw
编译到64位(假设您的同事有一个支持交叉兼容性的版本,即mingw-w64(
我想你的同事下载了http://www.mingw.org/但他/她需要:http://mingw-w64.org
来自mingw.org/
"MinGW是GNU编译器集合(GCC(的本地Windows端口,具有可自由分发的导入库和头文件构建本机Windows应用程序;包括MSVC的扩展运行时支持C99功能。尽管(目前(提供只有一个32位的编译器套件,MinGW的所有软件都将在64位Windows平台">
来自mingw-w64.org/
"Mingw-w64是对原Mingw.org项目的改进,创建用于支持Windows系统上的GCC编译器。它分叉了它于2007年推出,以提供对64位和新API的支持。它从那时起得到了广泛的使用和分发">