Cross toolchains - Emdebian
Posted: Wed Jul 21, 2010 2:55 pm
(Съществуват няколко добри дистрибуции на cross toolchains в мрежата. В този пост ще се спра на инсталирането на Emdebian toolchains.)
Когато работите под Debian или Debian съвместима операционна изборът на Emdebian cross toolchain е съвсем логичен. Съществуват два начина за инсталиране на съответния cross toolchain - да използвате прекомпилирани пакети или да си компилирате сами от source пакетите.
В случай, че нямате някакви специфични изисквания инсталирането от прекомпилирани пакети е най-лесния и бърз вариант. Ако вече сте запознати с инсталирането на пакети под Debian, то не са ви необходими повече знания.
EDIT: Все още съществува някакъв досаден dependency проблем с инсталирането на gdb-arm-linux-gnu. За момента се препоръчва да го игнорирате като включите опцията -f към apt-get командата.
EDIT [July 2013]: В новите версии имената на пакетите за ARM са сменени. За по-старите процесори (armv4t, armv5, armv6) се използва armel, а за новите (armv7+VFP) - armhf. Също така, за доста от пакетите префикса -gnu- е заменен с -gnueabi-, за да се подчерате архитектурата на изпълнимия файл EABI.
За горната инсталация това ще изглежда така:
EDIT [April 2014]: Последните месеци GCC има проблем с зависимост от пакет, невключен в emdebian, но нужен за иснталация. Затова е възможно при инсталация да се стигне до грешка
Като администратор
Това ще свали сорсовете на пакета и ще го генерира за архитектура armel.
Би трябвало да го инсталира автоматично след сваляне, но ако не го направи - значи го е конвертирало и съхранило в текущата директория като .deb пакет. Този пакет може да се инсталира ръчно с dpkg -i.
Когато работите под Debian или Debian съвместима операционна изборът на Emdebian cross toolchain е съвсем логичен. Съществуват два начина за инсталиране на съответния cross toolchain - да използвате прекомпилирани пакети или да си компилирате сами от source пакетите.
В случай, че нямате някакви специфични изисквания инсталирането от прекомпилирани пакети е най-лесния и бърз вариант. Ако вече сте запознати с инсталирането на пакети под Debian, то не са ви необходими повече знания.
- Необходимо е да добавите Emdebian в списъка с репозиторита, можете да използвате пакетен мениджър като synaptic, kpackage и т.н. или да редактирате директно файла /etc/apt/sources.list. Още по-добър вариант е да добавите нов файл в директорията /etc/apt/sources.list.d/. Ако искате да използвате текущата стабилна версия е необходимо да добавите следния ред:
- Code: Select all
deb http://www.emdebian.org/debian/ lenny main
- Необходимо е да опресните списъка с пакети посредством командата
- Code: Select all
#apt-get update
- Последната стъпка е инсталирането на избраните пакети. Примерно следния ред ще инсталира ARM C/C++ toolchain:
- Code: Select all
apt-get install libc6-arm-cross libc6-dev-arm-cross binutils-arm-linux-gnu gcc-4.3-arm-linux-gnu g++-4.3-arm-linux-gnu gdb-arm-linux-gnu
Ако не знаете точното име на някой пакет можете да ползвате търсачката на пакети
EDIT: Все още съществува някакъв досаден dependency проблем с инсталирането на gdb-arm-linux-gnu. За момента се препоръчва да го игнорирате като включите опцията -f към apt-get командата.
EDIT [July 2013]: В новите версии имената на пакетите за ARM са сменени. За по-старите процесори (armv4t, armv5, armv6) се използва armel, а за новите (armv7+VFP) - armhf. Също така, за доста от пакетите префикса -gnu- е заменен с -gnueabi-, за да се подчерате архитектурата на изпълнимия файл EABI.
За горната инсталация това ще изглежда така:
- Code: Select all
apt-get install libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi gdb-arm-linux-gnueabi
EDIT [April 2014]: Последните месеци GCC има проблем с зависимост от пакет, невключен в emdebian, но нужен за иснталация. Затова е възможно при инсталация да се стигне до грешка
. При опит за следване на зависимостите се стига до пакет libgomp1. Възможен вариант за справяне с този проблем е инсталирането на пакетите xapt и dpkg-cross. После чрез тях да се свали и инсталира libgomp1 от нормалното Debian хранилище и да се прекомпилира за amrel:Broken Dependency
Като администратор
- Code: Select all
xapt -a armel -m libgomp1
Това ще свали сорсовете на пакета и ще го генерира за архитектура armel.
Би трябвало да го инсталира автоматично след сваляне, но ако не го направи - значи го е конвертирало и съхранило в текущата директория като .deb пакет. Този пакет може да се инсталира ръчно с dpkg -i.