EXL's Developer Blog
Translate site on my language:

Каталог статей
Меню сайта

Категории раздела

Поиск

Друзья сайта
  • MotoFan.Ru
  • Dingoo A320.Русский Ресурс
  • Motorola Gaming site
  • Android Games Development
  • ROKR E2 Developments

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Приветствую Вас, Гость · RSS 27.06.2017, 23:12

    Главная » Статьи » Cтатьи

    Компиляция Python 2.2.1


    Для начала скачиваем
    тулчейн
    Устанавливаем его, подробнее про установку тут, в закреплённом посту
    Скачиваем собственно 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
    Так что выполняем
    Code
    make install

    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 будет число пи smile

    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'ы, примеры скриптов

    Категория: Cтатьи | Добавил: EXL (28.11.2010)
    Просмотров: 565 | Комментарии: 1 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Copyright EXL © 2017
    Сделать бесплатный сайт с uCoz