View source for Toolchain/ru
From Openmoko
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Templates used on this page:
Return to Toolchain/ru.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Templates used on this page:
Return to Toolchain/ru.
![]() |
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |
A toolchain это набор инструментов необходимых для создания кода. Для Openmoko, мы предлагаем различные варианты для следующих целей использования:
You should be reasonably familiar with Linux and its command line tools, have an x86-compatible computer with at least 1G of free disk space. You should have experience with compiling programs from source using your local compiler. The remainder of this document will also assume you have write access in your home directory (~) and /usr/local/ (becoming root if needed). If any of this is not the case, please call your local administrator for help.
Last but not least you should have a working setup that allows you to compile native software packages using the autotools build system (the triade of ./configure, make, make install).
Частичный список необходимых пакетов -- пожалуйста добавьте если нехватает:
sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev \ ccache libxrender-dev intltool libmokoui2-dev libgconf2-dev mtools fakeroot alien check
sudo apt-get install uboot-mkimage
yum install gcc gcc-c++ autoconf automake binutils libtool glib2-devel \ ccache libXrender-devel intltool GConf2-devel mtools gettext-devel
Fedora-Core does not appear to have libmokoui2 available.
-= 2008.9=- черновик
There is a fresh meta-toolchain.
# checkout the source code $cd /tmp $svn checkout http://om-assassin.googlecode.com/svn/trunk assassin $cd assassin
# Build ! $./autogen.sh --host=arm-angstrom-linux-gnueabi $ file src/assassin src/assassin: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped
if you got some message when do configure, like this
No package 'edje' found
you can try "opkg-target list |grep edje |grep dev" to find out what package you should install.
NOTE: If you wish to improve an existing Openmoko application and you are running Debian or Ubuntu i386 (тоесть можете установить с .deb), you may wish to skip the below and instead use:
Openmoko application development in 5 minutes by Andreas Dalsgaard. (based on the 2007.2 stack) |
Подготовленный toolchains можно скачать с downloads.openmoko.org:
mkdir ~/sources cd ~/sources
wget http://downloads.openmoko.org/toolchains/openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2 или wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2
NOTE: Часть людей имеют проблемы с toolchain сборка 20080521. Если есть ошибки, то попробуйте другие версии, |
Далее, вы должны это распаковать это в вашу файловую систему. Этот toolchain не переносимый, и должен быть распакован строго в /usr/local/openmoko/. Теперь вы можете получить следующии опции:
cd / tar -xjvf ~/sources/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2
bunzip2 openmoko-*-arm-linux-gnueabi-toolchain.tar.bz2 gzip openmoko-*-arm-linux-gnueabi-toolchain.tar fakeroot alien -d openmoko-*-arm-linux-gnueabi-toolchain.tar.gz sudo dpkg -i openmoko_*-arm-linux-gnueabi-toolchain*.deb
bitbake meta-toolchain-openmoko
В конце, каждый раз когда вы будете использовать этот toolchain, Вам енобходимо настроить переменные окружения, чтобы инструменты были найдены. The toolchain provides a script to do that, so the only thing you need to do is to source it. Note that if you are not using a "sh" or "bash" shell (check with "echo $SHELL") that you need to start "sh" or "bash" first.
. /usr/local/openmoko/arm/setup-env
export PATH=$PATH:/usr/local/openmoko/arm/bin
Note: This is will only last for your current session. Add it to your shell startup scripts to make it permenant (~/.bashrc for instance).
В Openmoko toolchain по умолчанию отсутствуют многие библиотеки. Однако, с его помощью вы можете скачать и установить библиотеки, которые уже существуют в репозитарии Openmoko. (По умолчанию обращение происходит к Тестовому Репозитарию.)
. /usr/local/openmoko/arm/environment-setup
opkg-target update
opkg-target list |grep edje-dev
opkg-target install libedje-dev
В целевом каталоге (в этом примере ~/) необходимо проделать следующие действия:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
. /usr/local/openmoko/arm/setup-env
om-conf openmoko-sample2
cd openmoko-sample2
make
Если вы хотите оставить данный проект в системе для последующего использования в качестве, например, разделяемой библиотеки, вы можете выполнить следующие шаги, которые установят его по соответствующим путям с заданным конфигурационным префиксом.
om-conf --prefix=/usr/local/openmoko openmoko-sample2 cd openmoko-sample2 make install
Чтобы собрать собственный проект используя файлы из openmoko-sample2, в них нужно внести некоторые изменения:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
mv openmoko-sample2 your-project-name cd your-project-name cd src rm *.c
cp your-sources . cd ..
PKG_NAME="your-project-name"
AC_INIT(your-project-name, 0.0.1, http://www.openmoko.org/) AC_CONFIG_SRCDIR(src/main.c)
cd data mv openmoko-sample.png your-project-name.png mv openmoko-sample.desktop your-project-name.desktop
dist_desktop_DATA = your-project-name.desktop dist_appicon_DATA = your-project-name.png
dist_desktop_DATA = your-project-name.desktop dist_appicon_DATA = your-project-name.png
Name=your-project-name Encoding=UTF-8 Version=0.0.1 Type=Application Exec=your-project-name
Icon=your-project-name
cd .. cd src
bin_PROGRAMS = your-project-name your_project_name_SOURCES = \ main.c your_project_name_LDADD = @DEPENDENCIES_LIBS@
We have included a script to make an ipkg out of your application. Note that this is not needed to test your application on the Neo (for that you can just scp the resulting binary and data over), however it's very handy if you want to distribute your application to others.
om-make-ipkg openmoko-sample2
Now you got openmoko-sample2_0.1_armv4t.ipk , you can `scp' it to your Neo and install it:
scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202: ssh root@192.168.0.202 opkg install openmoko-sample2_0.1_armv4t.ipk
Note that while you can redistribute the generated ipkg, be aware that this is a bare-bones ipk that contains no further information, i.e. you will lack library dependencies. See below how to fix this.
You can also supply the version number, a description, and an author / contacts string in a control file:
om-make-ipkg myapp myapp_control
A template of myapp_control:
Package: $appname Version: 0.1 Description: package built by openmoko toolchain Section: openmoko/applications Priority: optional Maintainer: $USER Architecture: armv4t Homepage: http://www.openmoko.org/ Depends: Source: ${SRC}
Использование внешнего toolchain - это простой способ сборки приложений для вашего Neo. Если вы уже ознакомились с этой процедурой, возможно вы захотите разобраться с
git clone git://git.openmoko.org/git/kernel.git linux-2.6 cd linux-2.6 git checkout -b mystable origin/stable cp defconfig-gta02 .config ./build
Will fail with error message "arm-angstrom-linux-gnueabi-ld: unrecognized option '-Wl,-rpath-link,/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/lib'" until /usr/local/openmoko/arm/setup-env is modified. LDFLAGS should be changed from:
export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-rpath-link,${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -Wl,-O1"
to:
export LDFLAGS="-L${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -rpath-link ${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/lib -O1"
I also had to change the 'build' script to hardcode the path to the compiler.
Добавьте необходимые библиотеки к полю _LDADD в src/Makefile.am, например:
openmoko_sample2_LDADD = @DEPENDENCIES_LIBS@ -lmokogsmd2
Не забудьте выполнить om-conf еще раз после добавления.
Рано или поздно вам захочется откомпилировать приложение с зависящее от чего-то, чего нет в готовом toolchain, например от каких-то малоизвестных библиотек.
В этом случае не стесняйтесь просить включения дополнительных библиотек в следующий релиз Openmoko toolchain. Ну а пока новый релиз не вышел, вы можете расширить уже инсталлированный toolchain следующим образом. Предположим, вам необходима библиотека liburiparse.
cd ~/source wget http://downloads.sourceforge.net/uriparser/uriparser-0.6.0.tar.bz2 tar xjf uriparser-0.6.0.tar.bz2 cd uriparser-0.6.0 ./configure --host=arm-angstrom-linux-gnueabi \ --prefix=/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr make make install
Вот и все.
If you have written a cool application which you want to share with others, the best way to do that is to
See also Customizing the Openmoko Distribution.
Attached is a beta fix for the .la problem. Untar the .tar.bz2 as root, and execute the following bash script as root:
#!/bin/sh DIR=/usr/local/openmoko/arm for la in `find $DIR -iname \*.la`; do dependency_libs= . $la for lib in $dependency_libs ; do delib=`echo $lib | grep -E .la$` if [ -z $delib ] ; then echo -n elif [ -f $delib ]; then echo -n else basedelib=`basename $delib` replacedelibs=`find $DIR -iname $basedelib` found=0 for replacedelib in $replacedelibs ; do if [ $replacedelib == $delib ]; then found=1 fi done if [ $found -gt 0 ] ; then echo -n else sed_delib=`echo $delib | sed 's/\//\\\\\//g'` sed_replacedelib=`echo $replacedelib | sed 's/\//\\\\\//g'` # A bit slow, we could chain expressions for speed. :) cp $la $la.old cat $la | sed "s/$sed_delib/$sed_replacedelib/g" > $la.new mv $la.new $la rm $la.old fi fi done done