如何解决在Fedora上使用MinGW64编译Windows的boost-python 1.73.0
我需要在Fedora的生皮上使用MinGW64编译boost-python 1.73.0,以便为Windows 10 64bit构建Python绑定(不,我不能使用Visual Studio)。不幸的是,Fedora的mingw64-boost
软件包中唯一缺少的库是boost-python
,哎呀!
实际上,所有依赖项都打包在Fedora for MinGW64上,这非常不错。所以我正在尝试建立自己:
wget https://dl.bintray.com/boostorg/release/1.73.0/source/boost_1_73_0.tar.bz2
tar -xjf boost_1_73_0.tar.bz2 && cd boost_1_73_0
./bootstrap.sh
# in a docker container,so /root
./b2 --with-python address-model=64 target-os=windows toolset=gcc-mingw64 \
variant=release link=shared --user-config=/root/user-config.jam
using gcc : mingw64 : x86_64-w64-mingw32-g++ ;
using python
: 3.9
: /usr/x86_64-w64-mingw32/sys-root/mingw/bin/python3.9.exe
: /usr/x86_64-w64-mingw32/sys-root/mingw/include/python3.9
: /usr/x86_64-w64-mingw32/sys-root/mingw/lib/python3.9 ;
它成功运行了一段时间,但随后出现错误
/usr/lib/gcc/x86_64-w64-mingw32/10.2.1/../../../../x86_64-w64-mingw32/bin/ld: cannot find -lutil
collect2: error: ld returned 1 exit status
所以libutil
丢失了。真是个超级特定的名字!我尝试(重新)安装所有glibc软件包(显然通常在其中的libutil.so),无济于事。还找到了/usr/x86_64-w64-mingw32/sys-root/mingw/lib/libutildll.a
,尝试通过./b2 library=...
包含它,再次没有运气。
这是怎么回事?顺便说一句,this gist的完整命令失败了。
解决方法
因此,这需要对升压源进行修补才能摆脱libutil
链接。为了完全编译,必须应用一批其他补丁文件。这是我在fedora:rawhide中的完整命令链:
- 获取资源
wget https://dl.bintray.com/boostorg/release/1.73.0/source/boost_1_73_0.tar.bz2
tar -xjf boost_1_73_0.tar.bz2
cd boost_1_73_0
- 设置
~/user-config.jam
cat >> ~/user-config.jam <<EOL
using gcc : mingw64 : x86_64-w64-mingw32-g++ ;
using python
: 3.9
: /usr/x86_64-w64-mingw32/sys-root/mingw/bin/python3.9
: /usr/x86_64-w64-mingw32/sys-root/mingw/include/python3.9
: /usr/x86_64-w64-mingw32/sys-root/mingw/lib/python3.9/config-3.9 ;
EOL
- 引导增强
./bootstrap.sh --with-icu=/usr/x86_64-w64-mingw32/sys-root/mingw/ --with-toolset=gcc
- 从{li>修补
./boost_1_73_0_patches
中的所有文件
- 此存储库中的单个补丁(源代码为git clone):https://aur.archlinux.org/packages/mingw-w64-boost-python/
- 此存储库中的所有补丁文件:https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-boost
通常这样申请:
patch -p1 -i patches/boost-1.63.0-python-test-PyImport_AppendInittab.patch
- 构建boost-python
./b2 address-model=64 link=shared runtime-link=shared threading=multi threadapi=win32 toolset=gcc variant=release python=3.9 --with-python
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。