Я пытаюсь кросс-компилировать numpy
для руки (BeagleBone & RPi). Я работаю на Debian Buster с 32-битной кросс-компиляцией, включая библиотеки i386 (32-битные) и все необходимые наборы инструментов arm.
Когда я запускаю:
export CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ AR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib; \
python3 setup.py build_ext --inplace
, я получаю следующее ошибка:
C compiler: arm-linux-gnueabihf-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -m32 -I/usr/include/i386-linux-gnu/ -m32 -I/usr/include/i386-linux-gnu/ -fPIC
compile options: '-Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/usr/local/include/python3.7m -c'
arm-linux-gnueabihf-gcc: _configtest.c
arm-linux-gnueabihf-gcc: error: unrecognized command line option ‘-m32’; did you mean ‘-mbe32’?
Я проследил через файл setup.py numpy
и обнаружил, что в конечном итоге эти настройки, похоже, создаются в вызове distutils.core._setup_distribution.get_command_obj("build")
.
Ошибка Само собой разумеется, и попытка запустить команду без флагов -m32, кажется, работает правильно.
Редактировать: дальнейшее копание показало, что эти параметры поступают в сценарий сборки с помощью:
sysconfig.get_config_var("LDSHARED")
Я все еще в замешательстве, потому что следующее по-прежнему не работает:
$LDSHARED="gcc -pthread -shared" python3 -c "import sysconfig; print(sysconfig.get_config_var('LDSHARED'))"
gcc -pthread -shared -m32 -m32