Yocto应用程序开发环境设置方法及使用
-----适合于系统开发工程师
此方法是使用bitbake和build directory生成交叉编译环境和根文件系统,是在系统编译的基础上来制作开发环境,因此较适合系统工程师使用。如果应用程序开发工程师使用这种方法,则过于繁琐和耗时,因此可以使用系统工程师制作好的交叉编译环境和根文件系统,来安装配置。
主机需要安装的程序包支持,ubuntu12.04(不用区分全部安装即可):
1.必需的
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath
2.图形和eclipse需要的
$ sudo apt-get install libsdl1.2-dev xterm
3.文档需要的
$ sudo apt-get install make xsltproc docbook-utils fop dblatex xmlto
4.adt-installer安装需要的
$ sudo apt-get install autoconf automake libtool libglib2.0-dev
一 开发环境的安装与配置(利用build directory)
开发环境的设置分为以下几个步骤:
生成交叉编译环境
根文件系统制作
Eclipse IDE环境安装配置
Yocto eclipse plug in插件的安装
配置yocto开发环境
生成交叉编译环境:
在build directory文件夹下,利用bitbake命令生成交叉编译环境。
首先,设置好build的环境变量:在yocto的源文件夹下使用脚本设置;
其次,检查build的配置文件,查看是否是需要设置的目标机器,配置文件为build文件夹下conf/local.conf,其中MACHINE为指定的目标机器。
最后,使用命令bitbake meta-ide-support,在build directory文件夹中生成交叉编译环境,如果tmp目录下有类似"environment-setup",则生成成功。
Image和根文件系统制作
此处的根文件系统和目标板的根文件系统有一定的区别,此处根文件系统要求支持交叉编译过程需要的include文件,lib库文件等等。当然目标板也可以使用这个文件系统,但这些在目标系统中没有作用,为了减少目标板存储的使用量,还是建议删除这些开发用的文件。
首先,设置好build的环境变量,在yocto的源文件夹下使用脚本设置,如source oe-init-build-env ../testbuild;
其次,为根文件系统增加可开发,nfs,调试等特性,修改build的配置文件,目标机器与交叉编译环境的一致,在配置文件conf/local.conf中增加变量EXTRA_IMAGE_FEATURES的设制,如EXTRA_IMAGE_FEATURES = "debug-tweaks dev-pkgs tools-debug eclipse-debug"设置,其中:
Debug-tweaks[注1] 使image适合开发,root用户名为空;
Dev-pkgs[注1] 增加所有程序包的开发选项;
Tools-debug[注1] 增加调试工具,如gdb, strace等;
Eclipse-debug[注1] 增加在eclipse环境中远程调试的支持;
Dbg-pkgs 增加所有安装包的符号信息,为调试和监控使用
Ptest-pkgs 增加ptest程序包,运行测试用例使用
Tools-sdk 增加开发工具,在目标系统中增加开发工具,一般不需要
Tools-profile 增加监控调试工具,如oprofile,exmap,lttng,valgrind等
Tools-testapps 增加有用的测试工具,如ts_print,aplay,arecord等
注1,为设置开发环境所必需的特性
修改完配置文件之后,则重新编译目标系统,如使用命令bitbake qt4e-demo-image。如果以前编译过整个系统,则此次编译很快,否则会耗时几个小时甚至更长的时间。等编译结束之后,在build目录下的tmp/deploy/images中就会生成相应的系统image和根文件系统——设用于开发调试的。
最后,安装根文件系统。使用以下命令安装在当前文件夹下:
$ source /home/work/yocto/build/tmp/environment-setup-armv5te-poky-linux-gnueabi
$ runqemu-extract-sdk \
/home/work/yocto/build/tmp/deploy/images/qemuarm/qt4e-demo-image-qemuarm.tar.bz2 \
$HOME/qemuarm-qt4e-nfs
这时根文件系统为qemuarm-qt4e-nfs。
3 安装配置eclipse IDE开发环境
Eclipse IDE开发环境建议使用,kepler4.3.2版本,从官方网站下载安装程序,解压即可。
3.1 安装
从http://www.eclipse.org/downloads下载kepler4.3.2版本;
解压,使用如下命令:
$ cd ~
$ tar -xzvf ~/Downloads/eclipse-standard-kepler-SR2-linux-gtk-x86_64.tar.gz
安装包解压之后,eclipse ide还不能正常打开,还需要安装java jre的运行库支持,正确安装java环境后,修改eclipse安装目录下的eclipse.ini文件,增加
-vm
/opt/ti/ccsv5/eclipse/jre/bin/java (此处为本地正确的java目录)
3.2 配置
启动eclipse IDE集成开发环境
在help下拉菜单中选择Install New Software,则弹出如下对话框
在work with下拉框中选择kepler-http://download.eclipse.org/releases/kepler
在下面的name选择框中找到Linux Tools并展开,选择LTTng - Linux Tracing Toolkit boxes.
接着找到Mobile and Device Development并展开,选择其中的
C/C++ Remote Launch (Requires RSE Remote System Explorer)
Remote System Explorer End-user Runtime
Remote System Explorer User Actions
Target Management Terminal
TCF Remote System Explorer add-in
TCF Target Explorer
接着找到Programming Languages并展开,选择
C/C++ Autotools Support
C/C++ Development Tools boxes.
完成安装并重启eclipse IDE
【注】整个过程需要网络连接
4 Yocto eclipse plug in插件的安装
启动eclipse ide开发环境
在help下拉菜单中选择Install New Software,弹出如上面的对话框
在work with处,点击Add按钮
在弹出的对话框的name处填写有意义的名字例如yocto plug in,在URL中写入地址http://downloads.yoctoproject.org/releases/eclipse-plugin/1.6.1/kepler
点击OK按钮,把刚刚填写的选项增加到work with的下拉菜单中
在work with的下拉菜单中选择刚刚增加的选项
待name处出现可选的程序,则选中所有的程序Yocto Project ADT Plug-in, Yocto Project Bitbake Commander Plugin, and Yocto Project Documentation plug-in
完成软件安装,并重启eclipse IDE开发环境
【注】 整个过程需要网络连接,保持网络通畅
5 配置yocto开发环境
Yocto开发环境为交叉编译环境,需要配置交叉编译器,根文件系统,模拟器等等。
打开eclipse IDE集成开发环境
选择windows下拉菜单中的Preferences,并选择Yocto Project ADT,如下图所示:
配置交叉编译环境,选择build system derived toolchain方式
Toolchain Root Location位置选择build文件夹
Sysroot Loction 选择2步安装的根文件系统位置
Target Architecture 如果toolchain位置选择正确,这里就会出现支持的交叉编译工具,选择正确的交叉编译工具,如armv5te-poky-linux-gnueabi
配置target选项,选择qemu模拟环境
选择QEMU
Kernel处设置2步生成image位置
Custom Option为qemu启动时的参数,可以不设置,也可以根据需要设置,参数请参考qemu相关的手册。
至此,基于eclipse IDE的yocto集成开发环境配置完成,已经可以利用eclipse环境开发应用程序了。Eclipse的使用相对较为简单,记下来简单介绍之。
二 开发环境的安装与配置(利用Toolchain Installer)
此方法适合于应用开发工程师,开发环境的设置分为以下几个步骤:
取得Toolchain installer,并安装
取得根文件系统和内核镜像文件
Eclipse IDE环境安装配置
Yocto eclipse plug in插件的安装
配置yocto开发环境
1 取得Toolchain installer安装包
1 通过网络下载适合自己机器的安装包
2 通过build directory编译生成(系统工程师生成),步骤如下所示:
首先,设置好build的环境变量:在yocto的源文件夹下使用脚本设置;
其次,检查build的配置文件,查看是否是需要设置的目标机器,配置文件为build文件夹下conf/local.conf,其中MACHINE为指定的目标机器。
最后,使用命令bitbake meta-toolchain,在build directory的tmp/deply/sdk中生成poky-eglibc-x86_64-core-image-sato-i586-toolchain-1.6.1.sh安装文件.或者使用命令bitbake
使用命令bitbake meta-toolchain-qte生成带qt应用程序开发的交叉编译环境——poky-eglibc-i686-meta-toolchain-qte-armv5te-toolchain-qte-1.6.1.sh.
取得toolchain installer安装包后,直接在命令行输入:
~$: poky-eglibc-x86_64-core-image-sato-i586-toolchain-1.6.1.sh
则交叉编译环境安装到/opt/poky/1.6.1目录中.
2 取得根文件系统和内核镜像文件
1 通过网络下载适合自己机器的安装包
2 通过build directory编译生成(系统工程师生成),步骤见一 开发环境的安装与配置(利用build directory)中的image和根文件系统生成
安装根文件系统。使用以下命令安装在当前文件夹下:
$ source /opt/poky/1.6.1/environment-setup-armv5te-poky-linux-gnueabi
$ runqemu-extract-sdk ~/Download/qt4e-demo-image-qemuarm.tar.bz2 \
$HOME/qemuarm-qt4e-nfs
这时根文件系统为qemuarm-qt4e-nfs。
3,4,5步与一 开发环境的安装与配置(利用build directory)相同.
三 使用eclipse IDE开发调试yocto应用程序
从本章开始便是如何使用eclipse开发环境了,结合我们使用的嵌入式开源项目,开发步骤如下所示:
打开eclipseIDE开发环境,在workspace中选择目录,作为工作空间的根目录,确保有读写权限,一般在/home中选择;
新建项目,选择File=>New=>C++ Project或者C Project根据需要选择,弹出如下对话框;
在弹出对话框中的Project name:处填写项目名字,如hello等,
在Project type 选择Yocto Project ADT CMake Project中的项目既可;
选择Run=>External Tools=>qemu……..启动qemu虚拟机;
选择Run=>Debug Configurations弹出如下对话框;
左边框选择C/C++Remote Application, 右边的选项Name填入名字, Remote Absolute File Path For c/C++ Application中填入远程目录;
配置网络远程调试,在Connection中选择New,
9.选择TCF方式,下一步填入被调试机器IP既可,qemu可以在命令行中输入ifconfig查看ip地址;
10.在Connection选择刚刚输入的主机;
11.选择Debugger栏,填入正确的交叉调试器
12.点击Debug,开始调试。
项目配置文件CMakeLists.txt参考相关CMake文档,了解其含义,比较容易理解.
四 利用qtcreator开发的配置方法
安装交叉编译环境:
在命令行运行~$: . poky-eglibc-i686-meta-toolchain-qte-armv5te-toolchain-qte-1.6.1.sh. (二 开发环境的安装与配置(利用Toolchain Installer)生成的安装包.)
安装qtcreator集成开发环境:
1从网上下载qtcreator安装包qt-creator-linux-x86-opensource-2.7.1.bin,在命令行运行
~$: . qt-creator-linux-x86-opensource-2.7.1.bin安装qtcreator。
2.2在安装目录中找到qtcreator.sh启动脚本,打开在其中添加qtcreator启动时加载的环境变量设置,添加如下内容:
#yocto
export SDKTARGETSYSROOT=/opt/poky/1.6.1/sysroots/armv5te-poky-linux-gnueabi
export PATH=/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin:/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:$PATH
export PKG_CONFIG_SYSROOT_DIR=$SDKTARGETSYSROOT
export PKG_CONFIG_PATH=$SDKTARGETSYSROOT/usr/lib/pkgconfig
export CONFIG_SITE=/opt/poky/1.6.1/site-config-armv5te-poky-linux-gnueabi
export OECORE_NATIVE_SYSROOT="/opt/poky/1.6.1/sysroots/i686-pokysdk-linux"
export OECORE_TARGET_SYSROOT="$SDKTARGETSYSROOT"
export OECORE_ACLOCAL_OPTS="-I /opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/share/aclocal"
export PYTHONHOME=/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr
export CC="arm-poky-linux-gnueabi-gcc -march=armv5te -marm -mthumb-interwork --sysroot=$SDKTARGETSYSROOT"
export CXX="arm-poky-linux-gnueabi-g++ -march=armv5te -marm -mthumb-interwork --sysroot=$SDKTARGETSYSROOT"
export CPP="arm-poky-linux-gnueabi-gcc -E -march=armv5te -marm -mthumb-interwork --sysroot=$SDKTARGETSYSROOT"
export AS="arm-poky-linux-gnueabi-as "
export LD="arm-poky-linux-gnueabi-ld --sysroot=$SDKTARGETSYSROOT"
export GDB=arm-poky-linux-gnueabi-gdb
export STRIP=arm-poky-linux-gnueabi-strip
export RANLIB=arm-poky-linux-gnueabi-ranlib
export OBJCOPY=arm-poky-linux-gnueabi-objcopy
export OBJDUMP=arm-poky-linux-gnueabi-objdump
export AR=arm-poky-linux-gnueabi-ar
export NM=arm-poky-linux-gnueabi-nm
export M4=m4
export TARGET_PREFIX=arm-poky-linux-gnueabi-
export CONFIGURE_FLAGS="--target=arm-poky-linux-gnueabi --host=arm-poky-linux-gnueabi --build=i686-linux --with-libtool-sysroot=$SDKTARGETSYSROOT"
export CFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types"
export CXXFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types"
export LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed"
export CPPFLAGS=""
export OECORE_DISTRO_VERSION="1.6.1"
export OECORE_SDK_VERSION="1.6.1"
export ARCH=arm
export CROSS_COMPILE=arm-poky-linux-gnueabi-
export OE_QMAKE_CFLAGS="$CFLAGS"
export OE_QMAKE_CXXFLAGS="$CXXFLAGS"
export OE_QMAKE_LDFLAGS="$LDFLAGS"
export OE_QMAKE_CC="$CC"
export OE_QMAKE_CXX="$CXX"
export OE_QMAKE_LINK="$CXX"
export OE_QMAKE_AR=$AR
export OE_QMAKE_LIBDIR_QT=/opt/poky/1.6.1/sysroots/armv5te-poky-linux-gnueabi//usr/lib
export OE_QMAKE_INCDIR_QT=/opt/poky/1.6.1/sysroots/armv5te-poky-linux-gnueabi//usr/include/qtopia
export OE_QMAKE_MOC=/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/moc4
export OE_QMAKE_UIC=/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/uic4
export OE_QMAKE_UIC3=/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/uic34
export OE_QMAKE_RCC=/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/rcc4
export OE_QMAKE_QDBUSCPP2XML=/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/qdbuscpp2xml4
export OE_QMAKE_QDBUSXML2CPP=/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/qdbusxml2cpp4
export OE_QMAKE_QT_CONFIG=/opt/poky/1.6.1/sysroots/armv5te-poky-linux-gnueabi//usr/share/qtopia/mkspecs/qconfig.pri
export QMAKESPEC=/opt/poky/1.6.1/sysroots/armv5te-poky-linux-gnueabi//usr/share/qtopia/mkspecs/linux-g++
export QT_CONF_PATH=/opt/poky/1.6.1/sysroots/i686-pokysdk-linux//etc/qt.conf
#yocto end
此内容为交叉编译环境中,environment-setup-armv5te-poky-linux-gnueabi此文件内容。
2.3在桌面添加快捷方式:
1)鼠标右键添加新建文档,
2)编辑其内容,添加如下内容:
[Desktop Entry]
Categories=Development;
Comment[zh_CN]=
Comment=
Exec=/home/ui/qtcreator-2.7.1/bin/qtcreator.sh
GenericName[zh_CN]=IDE
GenericName=IDE
Icon=/home/ui/qtcreator-2.7.1/share/qtcreator/templates/shared/icon80.png
MimeType=
Name[zh_CN]=qtcreator
Name=qtcreator
Path=
StartupNotify=true
Terminal=false
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=owen
其中Exec与Icon正确设置目录即可;
3)更改文件属性,增加执行权。
Qtcreator开发环境安装完成,以后直接双击桌面图标接口启动。
配置qtcreator开发环境:
打开qtcreator主界面,菜单工具---选项,选择构建与运行,
3.1选择qt版本栏,弹出如下界面:
点击添加按钮,添加qt版本,在1步安装的交叉编译环境目录中,如:
/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/qmake2,选择此文件即可。
2 选择编译器栏,填出如下界面:
添加交叉编译环境,点击添加按钮,增加一个手动设置选项,在名称栏中填入有意义的名称,在编译器路径栏中填入交叉编译路径,如/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc。
3 选择构建套件栏,弹出如下界面:
点击添加按钮,在手动设置中增减一选项,并依次填写相应的栏:
名称:填入有意义的名字即可
设备类型:选择通用linux设备
设备:选择通用linux设备
Sysroot:填入根文件系统路径,如图所示,此文件系统为一 开发环境的安装与配置(利用build directory)生成。
编译器:选择3.2设置的编译器即可
调试器:选择交叉编译调试器/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb
Qt版本:选择3.1设置qt版本。
配置目标设备:
打开qtcreator主界面,菜单工具---选项,选择设备,弹出如下窗口:
点击添加按钮,选择通用linux设备,在设置向导中设置好目标设备的ip地址和登陆的用户名和密码即可。
配置qemu模拟器,模拟通用设备
打开qtcreator主界面,菜单工具---选项,选择环境,点击外部工具栏,弹出如下窗口:
点击添加按钮,添加工具,起个有意义的名字,如qemu,并在右边填好各栏内容,其中关键的两栏为:
执行挡:/usr/bin/xterm
参数:-e "source /opt/poky/1.6.1/environment-setup-armv5te-poky-linux-gnueabi;runqemu qemuarm /home/ui/work/yocto/sysapp/development-tools/zImage--3.14+git0+09424cee64_d7a5330e50-r0-qemuarm-20140822152724.bin /home/ui/work/yocto/sysapp/qemuarm-qt4e-nfs ;bash"
至此基于qtcreator的开发环境配置完成,可以利用其开发应用程序,并在qemu模拟环境中调试程序。