LINUX.ORG.RU

Кросс-компиляция Python для встроенной системы

 


0

1

Нарисовал makefile для кросс-сборки мелкого встраиваемого Linuxа: https://github.com/ponyatov/cross

Обнаружился затык с кросс-сборкой Python 2.7.x: пользуясь мануалом http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html удается статически собрать ядро (python и libpython.a), но со сборкой модулей затык, множественные ошибки

Есть подозрение что для работы Python необходима поддержка динамических библиотек ? Или все же есть способ выбрать десяток модулей, и встроить их статически в интерпретатор, не таская мешок /usr/lib/python ?

PS: сначала попробовал пользоваться buildroot, но не нашел в документации как прописывать свои модули-расширения, сейчас возможно есть какие-то статьи как это сделать, собственный микровариант сборки меня уже устраивает, разве что хочется дополнительных плюшек типа питона

Есть подозрение что для работы Python необходима поддержка динамических библиотек ?

Многие модули питона сделаны в виде динамических либ. Не знаю на сколько это лечится, видел этот тред: http://stackoverflow.com/questions/1150373/compile-the-python-interpreter-sta... ?

Вообще, возможно, вот это подойдёт: http://www.infoworld.com/article/2608012/python/micro-python-s-tiny-circuits-... ? (его советует tailgunner, но не уверен что он его хоть раз видел в живую).

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Многие модули питона сделаны в виде динамических либ.

py2exe „остатичивает“ тем что зашивает в exe и *.py код и сам интерпретатор python и используемые библиотечки.

init_6 ★★★★★
()
Ответ на: комментарий от init_6

Могу ошибаться, но, мне кажется, py2exe просто создаёт самораспаковывающийся архив. Т.е. оно остаётся динамикой.

А вот что нужно ТС непонятно. Я так понял, он хочет отказаться от динамических бинарей. И тогда ему это не подойдёт.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Я так понял, он хочет отказаться от динамических бинарей. И тогда ему это не подойдёт.

С обычным python да. И в embedded он такой-же динамичный как и в обычных. Скорее всего выпилить «динамику» из python можно но такими усилиями... Что там чуть менее чем все перестанет работать.

init_6 ★★★★★
()
Ответ на: комментарий от true_admin

возможно, вот это подойдёт: http://www.infoworld.com/article/2608012/python/micro-python-s-tiny-circuits-... ?

Очень сомнительно.

его советует tailgunner, но не уверен что он его хоть раз видел в живую)

Я потому и советую - чтобы люди посмотрели и рассказали %) Но micropython не предназначен, чтобы быть основным интерпретатором Python в системе.

tailgunner ★★★★★
()
Ответ на: комментарий от true_admin

Да, хочу иметь в системе обычный generic CPython 2.7.x, включающий несколько ходовых модулей (типа os,sys,time,re), биндинг libSDL (pySDL), возможно еще пару-тройку доп.модулей типа sciPi.

В иделе — все это скомпиленное в один слонопотамный статический бинарник. Использовать динамические библиотеки пока не хочется: объем ОЗУ пока не жмет, а вот возможные заморочки с кросс-компиляцией с использованием динамических библиотек на текущем этапе иметь не хочется (насколько я знаю стандартизированной переменной типа CROSS_LD_LIBRARY_PATH нет, поэтому возможны заморочки со скриптами сборки).

ponyatov
() автор топика

Педон - жопа и говно. Нормально собирается только в user-mode qemu.

anonymous
()

Так уж устроен питон, что модули у него это модули.

Довольно странно, btw, для встраиваемой системы желать абсолютно все компилить статически.

Ядро - ок, можно обойтись без initrd. busybox - ок, заменяет кучу бинарников одним.

Но питон то зачем?..

ei-grad ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.