Я пытаюсь скомпилировать расширение python с помощью cython в 64-разрядной версии win 7, используя mingw (64-разрядную версию).
Я работаю с Python 2.6 (Active Python 2.6.6) и с соответствующим файлом distutils.cfg (устанавливая mingw в качестве компилятора)
При выполнении
> C:\Python26\programas\Cython>python setup.py build_ext --inplace
Я получаю сообщение о том, что gcc не имеет опции -mno-cygwin:
> C:\Python26\programas\Cython>python setup.py build_ext --inplace
running build_ext
skipping 'hello2.c' Cython extension (up-to-date)
building 'hello2' extension
C:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python26\include -IC:\Python26\PC -c hello2.c -o build\temp.win-amd64-2.6\Release\hello2.o
gcc: error: unrecognized command line option '-mno-cygwin'
error: command 'gcc' failed with exit status 1
gcc это:
C:\>gcc --version
gcc (GCC) 4.7.0 20110430 (experimental)
Copyright (C) 2011 Free Software Foundation, Inc.
Как я мог это исправить?
Ответы:
Похоже, что GCC 4.7.0 наконец удалил устаревшую
-mno-cygwin
опцию, но distutils еще не догнал ее. Либо установите более старую версию MinGW, либо отредактируйтеdistutils\cygwinccompiler.py
в своем каталоге Python, чтобы удалить все экземпляры-mno-cygwin
.источник
ld
ошибку? Я столкнулся с той же ошибкой и изо всех сил пытаюсь ее разобрать.В процессе решения этих и следующих проблем, которые я обнаружил, я написал рецепт в этой ветке . Я воспроизвожу его здесь, если он может быть полезен другим:
Пошаговый рецепт компиляции 64-битных расширений cython с python 2.6.6 с компилятором mingw в 64-битной win 7
Установите компилятор 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: Обратите внимание, что в python 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-битный Python).
Edit 2013: следующие шаги 5-10 можно пропустить, загрузив и установив libpython26.a из gohlke .
5) Получите gendef.exe из mingw-w64-bin_x86_64- mingw_20101003_sezero.zip (gendef.exe недоступен в дистрибутиве tmd64. Другое решение - скомпилировать gendef из исходного кода ...)
6) Скопируйте python26.dll (расположенный в C \ windows \ system32) в каталог пользователя (C: \ Users \ myname)
7) Создайте файл python26.def с помощью:
8) Переместите созданный файл python.def (расположенный в папке, откуда был запущен gendef) в каталог пользователя.
9) Создайте libpython.a с помощью:
10) Переместите созданный libpython26.a в C: \ Python26 \ libs
Создайте расширение .pyd
11) Создайте тестовый файл hello.pyx и файл setup.py, как указано в руководстве по cython ( http://docs.cython.org/src/quickstart/build.html )
12) Скомпилируйте с
Готово!
источник
numpy/distutils
папки, как дляmingw32compiler.py
.Эта ошибка теперь исправлена в версии-кандидате 1 Python 2.7.6 .
Фиксация исправления здесь .
Тема для отслеживания решенных проблем находится здесь .
источник
Попробуй это . Действительно работает при ошибке
https://github.com/develersrl/gccwinbinaries
источник