Сборка 64-битной libpython27.a с использованием cygwin, dlltool - PullRequest
5 голосов
/ 21 сентября 2011

Я пытаюсь собрать библиотеку DLL расширения Python на 64-битной машине Win7 с использованием cygwin (поскольку cygwin работает только как 32-битный процесс, на самом деле это кросс-компиляция).

Я сам создал libpython27.a изpython27.dll с использованием dlltool (как объяснено, например, здесь ), но сборка не удалась во время фазы компоновщика, говоря
skipping incompatible c:\Python27\libs/libpython27.a when searching for -lpython27
Это именно та ошибка, о которой сообщалось здесь (где парень перешел на компилятор MSVC ...).

Дополнительная информация:
- Active Python 2.7.2, win64, x64
- последняя версия cygwin с использованием компилятора /usr/bin/x86_64-w64-mingw32-g++.exe

Кто-нибудь знает, поддерживается ли это?
Есть ли способ использовать dlltool, который мне здесь не хватает?

(я нашел здесь theруководство по использованию
dlltool --as-flags=--64 -m i386:x86-64 -k -l libpython27.a -d python.def
но при этом я получил "invalid bfd target" ошибку от dlltool)

Спасибо!

Обновление : я верю в этоможет быть сделано, потому что Enthought Python содержит такой файл.Я хотел бы создать один для более распространенных дистрибутивов, которые его не содержат.

Ответы [ 2 ]

1 голос
/ 31 января 2013

Проблема в том, что вы используете 32-битный dlltool.Вероятно, в C: \ MinGW \ bin вместо C: \ MinGW64 \ bin.Вы можете изменить свой путь или запустить 64-битный инструмент, в частности, следующим образом:

C:\MinGW64\bin\dlltool -v --dllname python27.dll --def python27.def --output-lib libpython27.a
0 голосов
/ 01 октября 2011

Я не уверен, насколько это полезно для вас, но внизу страницы, на которую вы ссылались, есть ссылка на здесь - где написано:

Не используйте MinGW-w64. Как вы заметите, библиотека импорта MinGW для Python (например, libpython27.a) исключен из версии AMD64 Python. Это намеренно. Не пытайтесь создать его с помощью dlltool. Официального релиза MinGW-w64 пока нет, он все еще находится в "бета" и считается нестабильным, хотя вы можете получить 64-битную сборку, например, TDM-GCC. Также были проблемы с Mingw Runtime конфликтует со средой выполнения MSVC; это может произойти из мест, где вы не ожидайте, например, внутри библиотек времени выполнения для g ++ или gfortran. к оставайтесь в безопасности, пока избегайте MinGW-w64.

...