内容来源:http://www.yoctoproject.org/docs/2.0/adt-manual/adt-manual.html
本文档不会逐句翻译,只会依照自己在实践当中的使用来解释一些关键的内容.
在Ubuntu1204上需要安装下面的软件包:
sudo apt-get install libtool automake libarchive-dev
这篇文章是Yocto应用软件开发的说明文档.Application Development Toolkit (ADT)
介绍ADT的配置和安装;
介绍如何使用交叉编译工具;
介绍如何安装定制的开发包.
ADT组成结构:
1. ARCH相关的交叉编译工具链
2. 目标板sysroot
3. Eclipse 插件
4. QEMU 模拟器
5. 大量的用户层工具包
· 互联网下载:
http://downloads.yoctoproject.org/releases/yocto/yocto-2.0/adt-installer
· 编译:
$ cd ~
$ git clone git://git.yoctoproject.org/poky
$ cd poky
$ git checkout -b jethro origin/jethro
$ source oe-init-build-env
$ bitbake adt-installer
可以获得:build/tmp/deploy/sdk/adt_installer.tar.bz2
· 命令
$ cd ~
$ cp poky/build/tmp/deploy/sdk/adt_installer.tar.bz2 $HOME
$ tar -xjf adt_installer.tar.bz2
$ cd adt-installer
$ ./adt_installer
默认安装路径: /opt/poky/release
· 配置ADT
####adt_installer.conf###########
#定义了yocto的IPKG包的来源
#自己编译的可以配置成YOCTOADT_REPO="$$/build/tmp/deploy/images/qemux86"
YOCTOADT_REPO=http://adtrepo.yoctoproject.org//2.0
#定义你想要支持那些 Arch的交叉编译环境
YOCTOADT_TARGETS="arm x86"
#定义是否需要安装qemu工具
YOCTOADT_QEMU="Y"
#定义是否需要安装user-mode NFS
YOCTOADT_NFS_UTIL="Y"
###下面的的arm可以换成x86###
#定义期望从REPO获得该Arch的文件系统类型
YOCTOADT_ROOTFS_arm="minimal sato-sdk"
#定义特定的文件系统被使用和解压.如这里使用的是上面定义的2种之一.
YOCTOADT_TARGET_SYSROOT_IMAGE_arm="sato-sdk"
YOCTOADT_TARGET_MACHINE_arm="qemuarm"
YOCTOADT_TARGET_SYSROOT_LOC_arm="$HOME/test-yocto/$YOCTOADT_TARGET_MACHINE_arm"
· 互联网下载:
http://downloads.yoctoproject.org/releases/yocto/yocto-2.0/toolchain/ 选择想要交叉工具脚本.
例如: 准备给x86_64提供编译的工具: poky-glibc-x86_64-core-image-sato-i586-toolchain-2.0.sh
默认安装路径: /opt/poky/2.0
· 建立编译环境
Source “oe-init-build-env” 或者 “oe-init-build-env-memres”.
· 修改conf/local.conf
· 确保需要使用的layers , conf/bblayers.conf
· 生成交叉编译工具
$ bitbake meta-ide-support
得到:tmp/environment-setup-i586-poky-linux & tmp/sysroots/
使用3.1.2或者3.1.3得到的文件environment-setup-i586-poky-linux, 该文件定义了许多必须的环境变量.
· 互联网下载:
http://downloads.yoctoproject.org/releases/yocto/yocto-2.0/machines
· 工程编译
$ git clone git://git.yoctoproject.org/poky
$ git checkout jethro
$ source oe-init-build-env
$ bitbake core-image-sato
$ cd ~
$ source /opt/poky/2.0/environment-setup-i586-poky-linux
$ runqemu-extract-sdk ~/Downloads/core-image-sato-sdk-qemux86-2011091411831.rootfs.tar.bz2 $HOME/qemux86-sato
$ bitbake meta-toolchain
或者
$ bitbake core-image-sato -c populate_sdk
tmp/deploy/sdk/poky-glibc-x86_64-meta-toolchain-i586-toolchain-2.0.1.sh
实例:http://github.com/MentorEmbedded/meta-sourcery/
$ bitbake core-image-sato -c populate_sdk
tmp/deploy/sdk/poky-glibc-x86_64-meta-toolchain-i586-toolchain-2.0.1.sh
tmp/deploy/images/qemux86/bzImage-qemux86.bin
tmp/deploy/images/qemux86/core-image-sato-qemux86.tar.bz2
tmp/deploy/images/qemux86/core-image-sato-qemux86.ext4
$ cd $HOME
$ source /opt/poky/2.0/environment-setup-i586-poky-linux
$ runqemu qemux86 bzImage-qemux86.bin core-image-sato-qemux86.ext4
4.1. PackageManagement Systems
4.2.Configuring the PMS
· 创建工作目录
$ mkdir $HOME/helloworld
$ cd $HOME/helloworld
· 新建文件hello.c
#include
main()
{
printf("Hello World!\n");
}
· 新建文件Makefile.am
bin_PROGRAMS = hello
hello_SOURCES = hello.c
· 新建文件configure.in
AC_INIT(hello.c)
AM_INIT_AUTOMAKE(hello,0.1)
AC_PROG_CC
AC_PROG_INSTALL
AC_OUTPUT(Makefile)
· Source 环境变量
$ source/opt/poky/2.0/environment-setup-i586-poky-linux
· 生成localaclocal.m4
$ aclocal
$ autoconf
· 建立GUN编码规范的文件
touch NEWSREADME AUTHORS ChangeLog
· 生成configure 文件
$ automake -a
· 交叉配置工程
$ ./configure${CONFIGURE_FLAGS}
· 编译.安装工程
$ make
$ make install DESTDIR=./tmp
$ ./configure --host=armv5te-poky-linux-gnueabi --with-libtool-sysroot=sysroot_dir
CC=i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/1.8/sysroots/i586-poky-linux
LD=i586-poky-linux-ld --sysroot=/opt/poky/1.8/sysroots/i586-poky-linux
CFLAGS=-O2 -pipe -g -feliminate-unused-debug-types
CXXFLAGS=-O2 -pipe -g -feliminate-unused-debug-types