Показаны сообщения с ярлыком toolchain. Показать все сообщения
Показаны сообщения с ярлыком toolchain. Показать все сообщения

пятница, 15 октября 2010 г.

Midnight Commander v 4.7.4-54 для HDX BD-1.

Эта статья устарела. Для установки используйте ipkg.

Собрал текущую версию Midnight Commander. Архив качать отсюда: mc-4.7.4-bd1.tar.gz
Инструкции по самостоятельной сборке здесь.








Устанавливать так: sh-3.00# mv /opt /opt_org sh-3.00# mkdir -p /HD_Media/hda3/.opt/opt sh-3.00# ln -s /HD_Media/hda3/.opt/opt / sh-3.00# ln -s /HD_Media/hda3/sybhttpd /opt sh-3.00# cd / sh-3.00# tar -xzvf /path-to-archive/mc-4.7.4-bd1.tar.gz sh-3.00# cat >> "/persistfs/senv.sh" <<\EOF > #!/bin/sh > > if [ ! -d /opt_org ] > then > mv /opt /opt_org > ln -s /HD_Media/hda3/.opt/opt / > fi > > export PATH=/opt/bin:$PATH > export LD_LIBRARY_PATH=/opt/lib:$LD_LIBRARY_PATH > alias mc="mc -c" > EOF sh-3.00# chmod +x /persistfs/senv.sh sh-3.00#
Запускать так: sh-3.00# source /persistfs/senv.sh sh-3.00# mc

четверг, 30 сентября 2010 г.

Midnight Commander для HDX BD-1

Да благословенен Великий Google, с помощью которого я собрал midnight commander для HDX BD-1. Это пока ночная сборка, с отключенными фичами и вообще никакая, но работает. Позже отлакирую. А пока берите, что есть.

Архив и инсталлятор скачивайте по ссылкам:
mc-bd1.tar.gz


Для желающих повторить, углубить и расширить даю ссылку на мои неполные how to: http://antisclerosis.forumup.com/viewtopic.php?t=39&mforum=antisclerosis

Права на файлы проверьте сами. Если что, поменяйте.

Для инсталляции:
  1. скачайте архив
  2. запишите его, например, на флешку
  3. подключите флеш к bd-1
  4. выполните следующие команды
# cd /USB_Media/sdc1 # tar -zxvf mc-bd1.tar.gz # cd mc-bd1 # chmod 777 install-mc.sh # ./install-mc.sh
PS. В зависимости от того, куда вы вставите флешку в первой команде может быть придется использовать путь /USB_Media/sda1 или /USB_Media/sdb1.
Если по какой либо причине (неверные права на файлы) не скопировались линки, то выполните следующие команды:
# cd /usr/lib # ln -s libslang.so.2.2.2 libslang.so.2 # ln -s libgmodule-2.0.so.0.2200.5 libgmodule-2.0.so.0 # ln -s libglib-2.0.so.0.2200.5 libglib-2.0.so.0
В директории /usr/lib должны быть такие файлы:
# ls -la /usr/lib drwxrwxrwx 2 3043 default 0 Dec 31 17:25 . drwxrwxrwx 7 3043 default 0 Dec 31 1999 .. lrwxrwxrwx 1 root root 23 Dec 31 17:25 libglib-2.0.so.0 -> libglib-2.0.so.0.2200.5 -rwxr-xr-x 1 root root 1514509 Dec 31 17:06 libglib-2.0.so.0.2200.5 lrwxrwxrwx 1 root root 26 Dec 31 17:25 libgmodule-2.0.so.0 -> libgmodule-2.0.so.0.2200.5 -rwxr-xr-x 1 root root 18205 Dec 31 17:06 libgmodule-2.0.so.0.2200.5 lrwxrwxrwx 1 root root 17 Dec 31 17:24 libslang.so.2 -> libslang.so.2.2.2 -rwxr-xr-x 1 root root 1427427 Dec 31 17:06 libslang.so.2.2.2 #
После перезагрузки плеера midnight commander будет удален из памяти

пятница, 23 апреля 2010 г.

Устанавливаем toolchain для HDX BD-1 (Sygma 8642/8643)

Как я писал ранее софт HDX BD-1 собран тулчейном Sourcery G++ компании CodeSourcery

Компанией предлагаются интегрированные системы разработки созданные на основе открытого набора утилит разработки GCC, открытого IDE Eclipce и проприетарной связки, которая интегрирует два предыдущих продукта.

Кроме того с сайта можно бесплатно загрузить уже собранный toolchain для конкретного процессора и окружения.

Нам именно это и нужно.

Итак:
$ cd ~/Downloads $ wget http://www.codesourcery.com/sgpp/lite/mips/portal/package3548/public/mips-linux-gnu/mips-4.3-51-mips-linux-gnu.bin $ /bin/sh mips-4.3-51-mips-linux-gnu.bin

На вопрос "Where Would You Like to Install" я указал "~/SGPP".
Ответы на остальные вопросы я оставил по умолчанию.

После выполнения установки toolchain будет развернут в каталоге ~/SGPP.

Установка на этом закончена. Осталось только проверить как все работает.

Установим переменные окружения:
$ PATH=$HOME/SGPP/bin:$PATH $ export PATH

Скомпилируем тестовый пример:
$ cd ~/Staff/test
В редакторе создадим файл hello.c:
#include <stdio.h>
int main()
{
  printf ("Hello Popcorn!\nThis cool!\n");
  return 0;
}
и компилируем его

$ mips-linux-gnu-gcc -EL -march=74kc -fPIC -o hello hello.c

копируем на BD-1 и запускаем.
Вот и все.


Как будем копилировать наши проекты


  1. Загрузить скрипты по управлению ipkg пакетами в директорию ~/bin. Эту операцию нужно сделать один раз. $ cd ~/bin $ wget http://axaru.opendrive.com/files/7348691_AlHrM_8dee/ipkg-build.sh $ wget http://axaru.opendrive.com/files/7348692_kbnnr_9794/ipkg-expand.sh $ wget http://axaru.opendrive.com/files/7348690_4DtrH_8256/ipkg-make-index.sh $ ln -s ipkg-build.sh ipkg-build $ ln -s ipkg-expand.sh ipkg-expand $ ln -s ipkg-make-index.sh ipkg-make-index $ cat > ipkg-repo.sh <<\EOF #!/bin/bash rm *.ipk ipkg-build install cp *rel2.ipk $REPO rm $REPO/Packages ipkg-make-index $REPO EOF $ chmod +x ipkg-repo.sh $ ln -s ipkg-repo.sh ipkg-repo
    Скрипт ipkg-repo.sh нужен для автоматического создания установочного павета ipkg, копирования его в локальный репозиторий и переиндексации репозитория.
  2. Установить пути и переменные окружения. Делается каждый раз при открытии нового окна терминала. export NODUS=~/stuff/bd/path-to-curent-project/ export PATH=~/SGPP/bin:~/bin:$PATH export REPO=~/stuff/bd/00__repo__00 export STAGE=~/SGPP/stage export PKG_CONFIG_PATH=~/SGPP/stage/lib/pkgconfig
    REPO - ссылка на локальный репозиторий. Он является копией репозитория, расположенного по адресу http://ipkg.sigmaplayer.com/optware/mipselr2/cross/

    STAGE - в это место устанавливаются библиотеки, необходимые для компиляции других программ.
    Например. Программа ххх требует при линковке библиотеку zlib. Я предварительно компилю библиотеку zlib с параметром --prefix=$STAGE
    Затем выполняю установку библиотеки ( обычно make install), и после указанных действий ссылки на билиотеку zlib при линковке программы xxx должны удовлетвориться.

    PKG_CONFIG_PATH - эта переменная окружения, которая часто требуется для правильной линковки программ.

    NODUS - место, где находятся дистрибутивы пакетов над которыми идет работа в данный момент. Ведь гораздо проще написать cd $NODUS, чем cd /home/user/stuff/bd/rutorrent

  3. Компиляция программы: $ CC='mips-linux-gnu-gcc -EL' \ CXX='mips-linux-gnu-g++ -EL' \ AR=mips-linux-gnu-ar \ LD=mips-linux-gnu-ld \ RANLIB=mips-linux-gnu-ranlib \ CFLAGS='-EL -mips32r2 -Wa,-mips32r2 -mtune=74kf2_1 -mdspr2 -pipe -fPIC -s' \ CXXFLAGS='-EL -mips32r2 -Wa,-mips32r2 -mtune=74kf2_1 -mdspr2 -pipe -fPIC -s' \ CPPFLAGS="-I${HOME}/CodeSourcery/stage/include" \ LDFLAGS="-L${HOME}/CodeSourcery/stage/lib" \ ./configure --prefix=/opt --host=mips-linux-gnu $ make $ make install DESTDIR=${PWD}/install $ tar -cvf chk_size_mipsel-rel2.tar -C install opt $ ls -la chk_size_mipsel-rel2.tar
    Первой длинной командой я осуществляю сонфигурирование пакета.
    --host - говорит, что будет выполнятся кросскомпиляция.
    --prefix - указывает куда будут инсталлироваться откомпилированные программы.
    Для репозитария указываем --prefix=/opt. Если компилируем библиотеку, необходимую для линковки пакета, то компилим и создаем установочный пакет с опцией --prefix=/opt, а затем снова компилим ее с опицей --prefix=$STAGE.
    Далее обычная компиляция и установка в директорию ~/install
    Команды tar и ls нужны для вычисления размера устанавливаемого пакета. Он нам пригодится при создании описания пакета необходимого для правильной работы ipkg.

  4. Создание установочного пакета: $ mkdir -p install/CONTROL $ cat > install/CONTROL/control <<\EOF Package: <name> Priority: optional Section: Utilities Version: <version> Architecture: mipsel-rel2 Maintainer: <address> Depends: Installed-Size: $lt;xxx> KB Description: <80 char>. EOF
    Здесь я создаю файл install/CONTROL/control, содержащий описание компилируемого пакета.
    Поля, выделенные угловыми скобками обязательны к заполнению.

    Если программа для работы требует установки других программ, то их нужно указать в поле Depends.

    Все правки файла install/CONTROL/control я выполняю редактором gedit Затем я запускаю скрипт $ ipkg-repo
    Он сам создаст пакет ipkg, поместит его в локальный репозиторий, проиндексирует локальный репозиторий и создаст (обновит) файл $REPO/Packages

    На этом все. Осталось только синхронизировать локальный репозиторий с ftp

Документация по Sourcery G++ MIPS

Title Format
Assembler (PDF) PDF
Binary Utilities (PDF) PDF
C Library (Newlib) (PDF) PDF
Compiler (PDF) PDF
Debugger (PDF) PDF
Getting Started Guide (PDF) PDF
Linker (PDF) PDF
MIPS Toolchain (PDF) PDF
Math Library (Newlib) (PDF) PDF
Preprocessor (PDF) PDF
Profiler (PDF) PDF

Полезные ссылки:
17/06/2011 - добавил описание процесса создания пакета для optware

пятница, 12 февраля 2010 г.

Как установить кросскомпилятор для Popcorn (Sigma 86xx) на Ubuntu 9.10

Продолжение. Начало здесь

Данная заметка является вольным переводом статьи CrossCompiling for the NMT с небольшими дополнениями и уточнениями.

Для того, чтобы собрать программу под Networked Media Tank (а собирать мы будем midnight commander) нам нужно сначала установить кросскомпилятор.

Можно загрузить уже собраный Lundman, но, поскольку он был собран в другой конфигурации, программы, скомпилированные с его помощью, могут создавать "Floating point error"

Поэтому соберем кросскомпилятор самостоятельно.

Это не сложно.

Tребуется соединение с интернет.


  1. Определимся с корневым каталогом, где будет находится кросскомпилятор и проекты.
    Я создал каталог /home/akhromov/Staff и загрузил в него toolchain.

    $ mkdir /home/akhromov/Staff $ cd /home/akhromov/Staff $ wget http://www.networkedmediatank.com/download/firmware/nmt/gpl/smp86xx_toolchain.20080505.tar.bz2 $ tar -xjsf smp86xx_toolchain.20080505.tar.bz2 $ cd smp86xx_toolchain.20080505

  2. Установить следующие приложения:
    $ sudo apt-get install flex genromfs bison libncurses5-dev ncurses-base
    Если указанные пакеты или пакет присутствуют в системе, то никаких действий производиться не будет. Если какой либо пакет отсутствует, то он будет установлен.

  3. Установить GCC-3.4
    Меня предупреждал AntiHaos, что необходим компилятор GCC-3.4, но я по лени не проверил это. А Shtucer уже явно указал на мой косяк. Спасибо. Инструкцию поправил.
    $ wget http://ge.archive.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/gcc-3.4-base_3.4.6-6ubuntu5_i386.deb $ wget http://ge.archive.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/cpp-3.4_3.4.6-6ubuntu5_i386.deb $ wget http://ge.archive.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/gcc-3.4_3.4.6-6ubuntu5_i386.deb $ sudo dpkg -i gcc-3.4-base_3.4.6-6ubuntu5_i386.deb $ sudo dpkg -i cpp-3.4_3.4.6-6ubuntu5_i386.deb $ sudo dpkg -i gcc-3.4_3.4.6-6ubuntu5_i386.deb
    Порядок уствновки важен!

  4. Создать файл конфигурации.
    $ export CC=gcc-3.4 $ make menuconfig



    Ничего не менять, а сразу выбрать пункт < Exit >.
    Устанавливаем следующие параметры:
    Toolchain Options -> Kernel Headers -> (X) Linux 2.6.11.0 kernel headers
    Toolchain Options -> uClibc Version -> (X) uClibc 0.9.28.3
    Toolchain Options -> Binutils Version -> (X) binutils 2.15.91.0.2
    Toolchain Options -> GCC compiler version -> (X) gcc 4.0.4
    Остальные параметры я не менял.
    На вопрос: "Do you wish to save your new Buildroot configuration? "ответить < Yes >

  5. Запустить компиляцию toolchain
    $ make
    Система автоматически загрузит из интернет нужные пакеты и скомпилирует их.
    Весь процесс на Thinkpad x200s (процессор SL9400, RAM - 3GB) и 2-х мегабитным каналом в интернет занимает около получаса.


    Если все прошло правильно, то по завершении компиляции toolchain, Вы увидите в терминале следующее:
    . . . . . . . . . strip /home/akhromov/Staff/smp86xx_toolchain.20080505/toolchain_build_mipsel_nofpu/gdbclient-6.3/gdb/gdb install -c /home/akhromov/Staff/smp86xx_toolchain.20080505/toolchain_build_mipsel_nofpu/gdbclient-6.3/gdb/gdb /home/akhromov/Staff/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/bin/mipsel-linux-uclibc-gdb ln -s ../../bin/mipsel-linux-uclibc-gdb \ /home/akhromov/Staff/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/mipsel-linux-uclibc/bin/gdb creating toolchain-path.env... akhromov@x200s:~/Staff/smp86xx_toolchain.20080505$
  6. Проверка кросскомпилятора
    Для этого создадим тестовый каталог
    $ cd .. $ mkdir test $ cd test
    и в нем тестовый файл hello.c следующего содержания.
    #include <stdio.h>
    int main()
    {
      printf ("Hello Popcorn!\nThis cool!\n");
      return 0;
    }
    компилируем его
    $ source ../smp86xx_toolchain.20080505/toolchain-path.env $ mipsel-linux-gcc -static hello.c -o hello
    загружаем на наш nmt и в терминале запускаем:
    # ./hello Hello Popcorn! This cool! #
Теперь наш кросскомпилятор готов для работы.

Если нет подходящей темы, открывайте новую.