ในระหว่างกระบวนการแก้ไขปัญหาเหล่านี้และปัญหาต่อไปนี้ที่ฉันพบฉันได้เขียนสูตรอาหารในชุดข้อความนี้ ฉันทำซ้ำที่นี่ในกรณีที่อาจเป็นประโยชน์สำหรับผู้อื่น:
สูตรทีละขั้นตอนในการรวบรวมส่วนขยาย cython 64 บิตด้วย python 2.6.6 พร้อมด้วยคอมไพเลอร์ mingw ใน win 7 64-bit
ติดตั้งคอมไพเลอร์ mingw
1) ติดตั้ง tdm64-gcc-4.5.2.exe สำหรับการคอมไพล์ 64 บิต
ใช้โปรแกรมแก้ไขกับ python.h
2) แก้ไข python.h ใน C: \ python26 \ include ตามที่ระบุใน
http://bugs.python.org/file12411/mingw-w64.patch
ปรับเปลี่ยน distutils
แก้ไข 2013: หมายเหตุกว่าในหลาม 2.7.6 และ 3.3.3 -mno-Cygwin ได้ถูกลบออกในที่สุดดังนั้นขั้นตอนที่ 3 สามารถข้าม
3) กำจัดพารามิเตอร์ทั้งหมด -mno-cygwin สำหรับการเรียกไปยัง gcc ในคลาส Mingw32CCompiler ใน Python26 \ Lib \ distutils \ cygwinccompiler.py
4) ในโมดูลเดียวกันแก้ไข get_msvcr () เพื่อส่งคืนรายการว่างแทน ['msvcr90 '] เมื่อ msc_ver ==' 1500 '
ผลิตไฟล์ libpython26.a (ที่ไม่รวมอยู่ในหลาม 64 บิต)
แก้ไข 2013: ขั้นตอนต่อไป 5-10 สามารถข้ามได้โดยการดาวน์โหลดและติดตั้ง libpython26.a จาก gohlke
5) รับ gendef.exe จาก mingw-w64-bin_x86_64- mingw_20101003_sezero.zip (gendef.exe ไม่มีในการแจกแจง tmd64 อีกวิธีหนึ่งคือรวบรวม gendef จาก source ... )
6) คัดลอก python26.dll (อยู่ที่ C \ windows \ system32) ไปยังไดเร็กทอรีผู้ใช้ (C: \ Users \ myname)
7) สร้างไฟล์ python26.def ด้วย:
gendef.exe C: \ Users \ myname \ python26.dll
8) ย้ายไฟล์ python.def ที่สร้าง (อยู่ในโฟลเดอร์ที่เรียกใช้งาน gendef) ไปยังไดเร็กทอรีผู้ใช้
9) สร้าง libpython.a ด้วย:
dlltool -v --dllname python26.dll --def C: \ Users \ myname \ python26.def --output-lib C: \ Users \ myname \ libpython26.a
10) ย้าย libpython26.a ที่สร้างขึ้นไปที่ C: \ Python26 \ libs
สร้างนามสกุล. pyd ของคุณ
11) สร้างไฟล์ hello.pyx ทดสอบและไฟล์ setup.py ตามที่ระบุไว้ในบทช่วยสอน cython ( http://docs.cython.org/src/quickstart/build.html )
12) รวบรวมด้วย
python setup.py build_ext --inplace
ทำ!