Ubuntu 14.04下构建Eclipse集成开发环境(yocto的交叉编译工具链)

如果习惯了windowscodeWarriorKeil等集成开发环境后,突然使用linux下的vimmakefile来开发应用程序会十分不习惯。大多数初学者都是硬着头皮在Source Insight中编写完代码后再拷贝到虚拟机中执行(ubuntu14.04是可以使用Ctrl + CCtrl + Vwindows互相拷贝文件的,需要注意linux下的链接文件不可以拷贝到windows的),然后解决编译问题,这样的拷贝十分耗费时间,并且Debug时需要依赖gdb shell,这使应用程序编译调试变成一个体力活,还好Ubuntu里有Eclipse+CDT这样的神器!

 

本文以Ubuntu14.04为例,从零开始建立Eclipse集成开发环境。

首先需要安装Eclipse,网上有许多的安装教程,但有许多不一定适用,故我直接使用ubuntusoftware store安装

首先安装eclipse之后安装C/C++Development Tools for Eclipse(搜索eclpse-会显示eclipse的各种插件)

至此简单的安装工作完成了。

 

 

eclipse的使用比较简单,新建工程、增加源文件、头文件这个就不做介绍了,接下我我要介绍的是Eclipse使用交叉编译器的注意事项

首先,新建工程是需要选择为Cross GCC其他的均可以以后再设置,一直nextfinish

如下图:

Ubuntu 14.04下构建Eclipse集成开发环境(yocto的交叉编译工具链)

 

进入CDT界面后右键新建的项目选择属性进入如下界面:

Ubuntu 14.04下构建Eclipse集成开发环境(yocto的交叉编译工具链)

 

 

其中setting里面的内容是需要重点设置的

 

首先是Cross setting需要指定交叉编译工具的前缀和所在路径以我的arm-poky-linux-gnueabi-gcc为例,

设置Prefix: arm-poky-linux-gnueabi-

设置Path:/opt/fsl-imx-wayland/4.1.15-1.2.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi

接着设置Cross GCC Compiler中的路径,至少需要包含交叉编译工具链的以下三个目录

Ubuntu 14.04下构建Eclipse集成开发环境(yocto的交叉编译工具链)

 

 

接着由于yocto中下载的交叉编译工具链是需要在后面指定一大串参数的,而默认情况下eclipse是不知道你需要加哪些参数,故提供了一个Miscellaneous选项可以让你增加交叉编译的参数(在Optimization添加也是可以的),我增加的内容如下(参考交叉编译工具的脚本):

-c -fmessage-length=0 -march=armv7-a-mfloat-abi=hard -mfpu=neon -mtune=cortex-a9--sysroot=/opt/fsl-imx-wayland/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi

Ubuntu 14.04下构建Eclipse集成开发环境(yocto的交叉编译工具链)

 

接着是设置Cross GCC Linker

Cross GCC Compiler类似也是需要设置Miscellaneous:

-march=armv7-a -mfloat-abi=hard -mfpu=neon-mtune=cortex-a9--sysroot=/opt/fsl-imx-wayland/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi

其次当应用程序需要使用到某些库时,可以在libraries指定

下图为我的运行界面:

Ubuntu 14.04下构建Eclipse集成开发环境(yocto的交叉编译工具链)

 

 

以上是Eclipse交叉编译的相关设置,接下来介绍Eclipse远程交叉调试的方法。

 

点击RunàDebugConfigurations…àC/C++ Application下新建一个配置

首先单击Select otheràchangeworkspace settingàDefault LaunchersàC/C++ Application

àDebug选中右侧Legacy creat process launcher

点击OK,回到Debugconfigerations界面

接着进入Debugger界面将Debugger选为gdbserver,设置<arm-linux-gdb>的路径

,设置远程连接的协议和端口等

Ubuntu 14.04下构建Eclipse集成开发环境(yocto的交叉编译工具链)

 

 

Ubuntu 14.04下构建Eclipse集成开发环境(yocto的交叉编译工具链)

 

实际测试中发现使用TCP协议时是OK的,可以正常调试,但是使用串口协议时由于Eclipse的版本较低,会出现set remotebaud无法设置的问题(现在gdb的命令已经改成set serial baud了),此bug在更高版本的Eclipse可能已经被消除了。

最终效果图(TCP连接方式):

Ubuntu 14.04下构建Eclipse集成开发环境(yocto的交叉编译工具链)

 

 

如果非要使用串口远程debug可以使用DDD,在ubuntu 14.04下,可以sudo apt-get install ddd安装,具体的安装和使用方法请参考我的上一篇博客