Yocto应用程序开发环境设置方法及使用

Yocto应用程序开发环境设置方法及使用

                       -----适合于系统开发工程师

 

此方法是使用bitbakebuild 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)

开发环境的设置分为以下几个步骤:

  1. 生成交叉编译环境

  2. 根文件系统制作

  3. Eclipse IDE环境安装配置

  4. Yocto eclipse plug in插件的安装

  5. 配置yocto开发环境

 

  1. 生成交叉编译环境:

build directory文件夹下,利用bitbake命令生成交叉编译环境。

首先,设置好build的环境变量:在yocto的源文件夹下使用脚本设置;

其次,检查build的配置文件,查看是否是需要设置的目标机器,配置文件为build文件夹下conf/local.conf,其中MACHINE为指定的目标机器。

最后,使用命令bitbake meta-ide-support,在build directory文件夹中生成交叉编译环境,如果tmp目录下有类似"environment-setup",则生成成功。

 

 

  1. 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     增加监控调试工具,如oprofileexmaplttngvalgrind

  • Tools-testapps    增加有用的测试工具,如ts_printaplayarecord

 

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 Optionqemu启动时的参数,可以不设置,也可以根据需要设置,参数请参考qemu相关的手册。

 

 

至此,基于eclipse IDEyocto集成开发环境配置完成,已经可以利用eclipse环境开发应用程序了。Eclipse的使用相对较为简单,记下来简单介绍之。

 

开发环境的安装与配置(利用Toolchain Installer)

此方法适合于应用开发工程师,开发环境的设置分为以下几个步骤:

  1. 取得Toolchain installer,并安装

  2. 取得根文件系统和内核镜像文件

  3. Eclipse IDE环境安装配置

  4. Yocto eclipse plug in插件的安装

  5. 配置yocto开发环境

 

1 取得Toolchain installer安装包

  1. 1   通过网络下载适合自己机器的安装包

  2. 2   通过build directory编译生成(系统工程师生成),步骤如下所示:

首先,设置好build的环境变量:在yocto的源文件夹下使用脚本设置;

其次,检查build的配置文件,查看是否是需要设置的目标机器,配置文件为build文件夹下conf/local.conf,其中MACHINE为指定的目标机器。

       最后,使用命令bitbake meta-toolchain,在build directorytmp/deply/sdk中生成poky-eglibc-x86_64-core-image-sato-i586-toolchain-1.6.1.sh安装文件.或者使用命令bitbake -c populate_sdk生成带根文件系统的安装文件,用它安装可以省去2步的根文件系统安装.bitbake qt4e-demo-image –c populate_sdk

使用命令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. 1   通过网络下载适合自己机器的安装包

  2. 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开发环境了,结合我们使用的嵌入式开源项目,开发步骤如下所示:

  1. 打开eclipseIDE开发环境,workspace中选择目录,作为工作空间的根目录,确保有读写权限,一般在/home中选择;

  2. 新建项目,选择File=>New=>C++ Project或者C Project根据需要选择,弹出如下对话框;

  1. 在弹出对话框中的Project name:处填写项目名字,hello,

  2. Project type 选择Yocto Project ADT CMake Project中的项目既可;

  3. 选择Run=>External Tools=>qemu……..启动qemu虚拟机;

  4. 选择Run=>Debug Configurations弹出如下对话框;

  1. 左边框选择C/C++Remote Application,  右边的选项Name填入名字, Remote Absolute File Path For c/C++ Application中填入远程目录;

  2. 配置网络远程调试,在Connection中选择New

9.选择TCF方式,下一步填入被调试机器IP既可,qemu可以在命令行中输入ifconfig查看ip地址;

10.在Connection选择刚刚输入的主机;

11.选择Debugger栏,填入正确的交叉调试器

12.点击Debug,开始调试。

 

 

项目配置文件CMakeLists.txt参考相关CMake文档,了解其含义,比较容易理解.

 

利用qtcreator开发的配置方法

  1. 安装交叉编译环境:

在命令行运行~$: . poky-eglibc-i686-meta-toolchain-qte-armv5te-toolchain-qte-1.6.1.sh. ( 开发环境的安装与配置(利用Toolchain Installer)生成的安装包.)

 

  1. 安装qtcreator集成开发环境:

  2. 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

其中ExecIcon正确设置目录即可;

         3)更改文件属性,增加执行权。

 

         Qtcreator开发环境安装完成,以后直接双击桌面图标接口启动。

 

  1. 配置qtcreator开发环境:

打开qtcreator主界面,菜单工具---选项,选择构建与运行,

3.1选择qt版本栏,弹出如下界面:

点击添加按钮,添加qt版本,在1步安装的交叉编译环境目录中,如:

/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/qmake2,选择此文件即可。

        

  1. 2   选择编译器栏,填出如下界面:

添加交叉编译环境,点击添加按钮,增加一个手动设置选项,在名称栏中填入有意义的名称,在编译器路径栏中填入交叉编译路径,如/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc

 

  1. 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版本。

 

  1. 配置目标设备:

打开qtcreator主界面,菜单工具---选项,选择设备,弹出如下窗口:

点击添加按钮,选择通用linux设备,在设置向导中设置好目标设备的ip地址和登陆的用户名和密码即可。

 

  1. 配置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模拟环境中调试程序。


转载于:https://my.oschina.net/u/1167591/blog/340913

你可能感兴趣的:(Yocto应用程序开发环境设置方法及使用)