Для начала скачиваем тулчейн Устанавливаем его, подробнее про установку тут, в закреплённом посту Скачиваем собственно Python-2.2.1 Скачиваем Патч для кросс-компиляции 1. Запускаем окружение: Code cd /home/z6 . setenv-z6.sh 2. Распаковываем Python-2.2.1 в /home/z6: Code tar -C /home/z6 -xzvf /home/z6/Python-2.2.1.tgz 3. Создаём папку python в тулчейне Code mkdir /opt/toolchains/motomagx/arm-eabi2/python 4. Применяем патч (он должен лежать /home/z6) Code cd /home/z6 cat python-cross-compile.diff | patch -p0 5. Заходим в директорию питона и выполняем Code cd/home/z6/Python-2.2.1 ./configure --host=arm-linux-gnueabi --prefix=/opt/toolchains/motomagx/arm-eabi2/python make После Make ругнётся, что не может запустить ./python: 1: Syntax error: word unexpected (expecting ")") Правильно, мы ведь компилировали не под х86, а под ARM Так что выполняем 6. Копируем папку /opt/toolchains/motomagx/arm-eabi2/python в телефон, я например скопировал её в /mmc/mmca1/games/ (/mmc/mmca1- это флешка) 7. Кстати, не забываем устанавливать необходимые либы, понадобиться libutils и ещё некоторые. Если у вас тут возникнут проблемы - стучите в асечку 8. Ну и собственно Hello World - Создаём файл test.py - С помощью Notepad++ пишем туда следующее: Code print "Hello, Motorola!" - Сохраняем, кидаем файл куда-нибудь на телефон, например в папку /mmc/mmca1/test/ - Создаём такой скриптик start.sh: Code #!/bin/sh mypath=${0%/*} export HOME=$mypath LIBDIR1=/ezxlocal/download/mystuff/games/lib LIBDIR2=/mmc/mmca1/games/lib LIBDIR3=$mypath/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3 PYTHONHOME=/mmc/mmca1/games/python export PYTHONHOME PYTHONPATH=${PYTHONHOME}/lib/python2.2/site-packages:$PYTHONPATH PYTHONPATH=${PYTHONHOME}/lib/python2.2:$PYTHONPATH PYTHONPATH=${PYTHONHOME}:$PYTHONPATH export PYTHONPATH
LD_LIBRARY_PATH=${PYTHONHOME}/extras:${LD_LIBRARY_PATH} export LD_LIBRARY_PATH
exec $PYTHONHOME/bin/python2.2 -v $mypath/test.py - Копируем скрипт в папку test, подключаемся в телнет, выполняем: Code /mmc/mmca1/test/start.sh - И видим следующее Code ture__.pyc Python 2.2.1 (#1, Nov 28 2010, 15:31:13) [GCC 3.4.3 (MontaVista 3.4.3-25.0.96.%{_mvl_build_id} 2007-11-17)] on linux2 Type "help", "copyright", "credits" or "license" for more information. Hello, Motorola! # clear __builtin__._ # clear sys.path # clear sys.argv # clear sys.ps1 # clear sys.ps2 - Избавиться от мусора можно просто убрав флажок -v в скрипте Т.е Code exec $PYTHONHOME/bin/python2.2 $mypath/test.py Тогда будет просто Code [root@Symbiosis ~] #> /mmc/mmca1/test/start.sh Hello, Motorola! Результат можно вывести в файл: Code exec $PYTHONHOME/bin/python2.2 $mypath/test.py > $mypath/output.txt 9. Скрипт на питоне для получения числа пи. Code #! /usr/bin/env python
# Print digits of pi forever. # # The algorithm, using Python's 'long' integers ("bignums"), works # with continued fractions, and was conceived by Lambert Meertens. # # See also the ABC Programmer's Handbook, by Geurts, Meertens & Pemberton, # published by Prentice-Hall (UK) Ltd., 1990.
import sys
def main(): k, a, b, a1, b1 = 2L, 4L, 1L, 12L, 4L while 1: # Next approximation p, q, k = k*k, 2L*k+1L, k+1L a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1 # Print common digits d, d1 = a/b, a1/b1 while d == d1: output(d) a, a1 = 10L*(a%b), 10L*(a1%b1) d, d1 = a/b, a1/b1
def output(d): # Use write() to avoid spaces between the digits # Use str() to avoid the 'L' sys.stdout.write(str(d)) # Flush so the output is seen immediately sys.stdout.flush()
main() Code #!/bin/sh mypath=${0%/*} export HOME=$mypath LIBDIR1=/ezxlocal/download/mystuff/games/lib LIBDIR2=/mmc/mmca1/games/lib LIBDIR3=$mypath/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3 PYTHONHOME=/mmc/mmca1/games/python export PYTHONHOME PYTHONPATH=${PYTHONHOME}/lib/python2.2/site-packages:$PYTHONPATH PYTHONPATH=${PYTHONHOME}/lib/python2.2:$PYTHONPATH PYTHONPATH=${PYTHONHOME}:$PYTHONPATH export PYTHONPATH
LD_LIBRARY_PATH=${PYTHONHOME}/extras:${LD_LIBRARY_PATH} export LD_LIBRARY_PATH
exec $PYTHONHOME/bin/python2.2 $mypath/pi.py > $mypath/pi.txt Ждём с минутку, нажимаем Ctrl + C, и в файле pi.txt будет число пи 10. Примеры скриптов, демок итд можно посмотреть в файле /home/z6/Python-2.2.1/Demo В общем направление я дал. Дело за вами) Теперь насчёт pyGame и визуальной оболочки. pyGame реально портировать, он уже портирован на такие устройства как Dingoo A320, GP2X думаю нам нужно будет сделать лишь вывод изображения Я не сильно знаком с питоном, но если из него можно будет запускать необходимые шоумодули - получим оболочку. При написании мануала пользовался этим - ARM Cross-compiling Python и статьёй уважаемого racinglocura07 Зеркала. Прикрепил все файлы на мотофан: Скачать исходники Python-2.2.1 Скачать патч python-cross-compile Скачать уже откомпилированный Python-2.2.1 для Z6/V8/EM30/ZN5 и прочих MotoMagx Скачать HelloWorld'ы, примеры скриптов
|