如果习惯了windows下codeWarrior、Keil等集成开发环境后,突然使用linux下的vim和makefile来开发应用程序会十分不习惯。大多数初学者都是硬着头皮在Source Insight中编写完代码后再拷贝到虚拟机中执行(ubuntu14.04是可以使用Ctrl + C和Ctrl + V与windows互相拷贝文件的,需要注意linux下的链接文件不可以拷贝到windows的),然后解决编译问题,这样的拷贝十分耗费时间,并且Debug时需要依赖gdb shell,这使应用程序编译调试变成一个体力活,还好Ubuntu里有Eclipse+CDT这样的神器!
本文以Ubuntu14.04为例,从零开始建立Eclipse集成开发环境。
首先需要安装Eclipse,网上有许多的安装教程,但有许多不一定适用,故我直接使用ubuntu的software store安装
首先安装eclipse之后安装C/C++Development Tools for Eclipse(搜索eclpse-会显示eclipse的各种插件)
至此简单的安装工作完成了。
eclipse的使用比较简单,新建工程、增加源文件、头文件这个就不做介绍了,接下我我要介绍的是Eclipse使用交叉编译器的注意事项
首先,新建工程是需要选择为Cross GCC其他的均可以以后再设置,一直next到finish
如下图:
进入CDT界面后右键新建的项目选择属性进入如下界面:
其中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中的路径,至少需要包含交叉编译工具链的以下三个目录
接着由于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
接着是设置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指定
下图为我的运行界面:
以上是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,设置
,设置远程连接的协议和端口等
实际测试中发现使用TCP协议时是OK的,可以正常调试,但是使用串口协议时由于Eclipse的版本较低,会出现set remotebaud无法设置的问题(现在gdb的命令已经改成set serial baud了),此bug在更高版本的Eclipse可能已经被消除了。
最终效果图(TCP连接方式):
如果非要使用串口远程debug可以使用DDD,在ubuntu 14.04下,可以sudo apt-get install ddd安装,具体的安装和使用方法请参考我的上一篇博客