Я пытался кросс-компилировать скрипты Python для платы ARM
. Я новичок в CYTHON
и PYTHON
. У меня есть хост-машина x86_64
под управлением Linux. Сначала я использовал cython для преобразования моих скриптов в C
код:
file_name=$1 # It could be ex.py
file_c_ext="$(echo $file_name | sed "s/\(.*\)\(\.\)\(.*\)/\1.c/")" # It returns ex.c
file_o_ext="$(echo $file_name | sed "s/\(.*\)\(\.\)\(.*\)/\1.o/")" # It returns ex.o
python3.5m -m cython $file_name -o $file_c_ext --embed
ПРИМЕЧАНИЕ: Вышеприведенный python3.5m работает на моем хост-компьютере.
Мой сценарий тестирования Python имеет:
print("Hello World")
После этого я создаю некоторый сценарий среды и вызываю кросс-компилятор.
${CC} -Os -I ${2}/usr/include/python3.5m -o $file_o_ext $file_c_ext -lpython3.5m -lpthread -lm -lutil -ldl
После этого я перемещаю ex.o
с хостамашина для целевой машины. После запуска он показывает:
Я получаю эту ошибку:
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Я пытался установить переменные PYTHONHOME
и PYTHONPATH
для нескольких каталогов, но это не сработало.
Тем не менее, компиляция на моем хост-компьютере для хост-компьютера работает отлично и выводит сообщение «Hello World».