Ошибка кросс-компиляции для Windows Python

Я пытаюсь кросс-компилировать libplist ( https://github.com/libimobiledevice/libplist) для 64-битной Windows и создать из него DLL. Я загрузил подсистему mingw-w64 для Linux в Windows 10 (Ubuntu 14.04 bash) и установил переменные среды (CC, CXX, CPP, RANLIB). я использую ./autogen.sh --host=x86_64-w64-mingw32 настроить пакет. Однако он выходит с ошибкой:

configure:16825: error:
  Could not link test program to Python. Maybe the main Python library has been
  installed in some non-standard library path. If so, pass it to configure,
  via the LDFLAGS environment variable.
  Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
  ============================================================================
   ERROR!
   You probably have to install the development version of the Python package
   for your distribution.  The exact name of this package varies among them.
  ============================================================================

В config.log это говорит:

configure:16813: x86_64-w64-mingw32-gcc -o conftest.exe -g -O2  -I/usr/include/python2.7 -I/usr/include/x86_64-linux-g$
In file included from /usr/include/python2.7/Python.h:8:0,
                 from conftest.c:33:
/usr/include/python2.7/pyconfig.h:78:3: error: #error unknown multiarch location for pyconfig.h
 # error unknown multiarch location for pyconfig.h
   ^
In file included from /usr/include/python2.7/pyport.h:4:0,
                 from /usr/include/python2.7/Python.h:58,
                 from conftest.c:33:
/usr/include/python2.7/pyconfig.h:78:3: error: #error unknown multiarch location for pyconfig.h
 # error unknown multiarch location for pyconfig.h
   ^
In file included from /usr/include/python2.7/pymath.h:4:0,
                 from /usr/include/python2.7/Python.h:77,
                 from conftest.c:33:
/usr/include/python2.7/pyconfig.h:78:3: error: #error unknown multiarch location for pyconfig.h
 # error unknown multiarch location for pyconfig.h
   ^
configure:16813: $? = 1

Эта ошибка не возвращается, когда я пытаюсь скомпилировать ее для Linux, поэтому я подумал, что это потому, что ей нужны библиотеки python, скомпилированные для Windows x86_64. Я скопировал соответствующие файлы из Windows из C:/Python27/include и попытался установить переменную среды для конфигурации LDFLAGS="-L/path/to/python/include" а также PKG_CONFIG_PATH=/path/to/python/include по отдельности. Ни один из них не работал. Я также заметил, что в C:/Python27/include был также файл с именем pyconfig.h. Почему скрипт использует тот, который установлен в Linux? Есть ли способ, которым я мог бы заставить его использовать другой?

Моей главной целью было бы создать 64-битную Windows DLL из libusbmuxd ( https://github.com/libimobiledevice/libusbmuxd), но для этого также необходим компилятор libplist. Как я мог решить эту проблему? Спасибо за ответы заранее.

1 ответ

Вы можете попробовать libimobiledevice-win32. Хотя название немного сбивает с толку, оно создает 32-битные и 64-битные версии Windows libimobiledevice.

Вы можете скомпилировать libplist, libusbmuxd, libimobildevice и различные утилиты для Windows, используя Visual Studio, избегая необходимости кросс-компиляции.

Компания Quamotion, в которой я работаю, поддерживает libimobiledevice-win32, и мы стараемся идти в ногу с последними изменениями.

Вы можете загрузить предварительно скомпилированные версии из сборки CI, см., Например, https://ci.appveyor.com/project/qmfrederik/imobiledevice-net/build/artifacts для zip-файлов, которые содержат последние биты.

Другие вопросы по тегам