Build Python C Extension with Mingw

本文介绍如何配置Python使用Mingw进行CExtension的编译,包括创建配置文件和修改源代码的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缺省Python会使用VC编译C Extension,但特定的Python需要特定的VC编译,我更加倾向于使用Mingw。
创建lib\distutils\distutils.cfg,其内容为
[build]
compiler = mingw32

gcc 4.6可能不识别-mno-cygwin,找到lib\distutils\cygwinccompiler.py,将其去掉。如下的命令指定使用mingw32
python setup.py config --compiler=mingw32 build --compiler=mingw32 install
python setup.py config --compiler=mingw32 build --compiler=mingw32 bdist_wininst

python setup.py config --compiler=msvc build --compiler=msvc bdist_wininst
python3.10 mingw64 编译pyd文件,报错D:\gitlab\cython_asn1>python setup.py running build_ext building 'v2x_decoder' extension gcc -mdll -O -Wall -I./includes -ID:\programs\python310\include -ID:\programs\python310\Include -c spdu_decoder.cpp -o build\temp.win-amd64-cpython-310\Release\spdu_decoder.o -std=c++11 -O3 -Wall -m64 -DMS_WIN64 -static-libgcc -static-libstdc++ spdu_decoder.cpp: In function 'const char* spdu_oer_asn1_decode(const unsigned char*, int, int*)': spdu_decoder.cpp:75:9: warning: unused variable 'ret' [-Wunused-variable] int ret = 0; ^~~ gcc -mdll -O -Wall -I./includes -ID:\programs\python310\include -ID:\programs\python310\Include -c v2x_decoder.cpp -o build\temp.win-amd64-cpython-310\Release\v2x_decoder.o -std=c++11 -O3 -Wall -m64 -DMS_WIN64 -static-libgcc -static-libstdc++ writing build\temp.win-amd64-cpython-310\Release\v2x_decoder.cp310-win_amd64.def g++ -O -Wall -shared -s build\temp.win-amd64-cpython-310\Release\spdu_decoder.o build\temp.win-amd64-cpython-310\Release\v2x_decoder.o build\temp.win-amd64-cpython-310\Release\v2x_decoder.cp310-win_amd64.def -LD:\programs\python310\libs -LD:\programs\python310 -LD:\programs\python310\PCbuild\amd64 -lpython310 -lucrt -lvcruntime140 -o build\lib.win-amd64-cpython-310\v2x_decoder.cp310-win_amd64.pyd -L./libs -lasncodec -m64 D:/programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lucrt collect2.exe: error: ld returned 1 exit status error: command 'D:\\programs\\mingw64\\bin\\g++.exe' failed with exit code 1
最新发布
07-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值