使用QtCreator作为嵌入式Linux的IDE及可视化调试工具
开发嵌入式Linux程序的朋友们都有一个感触,那就是Linux太自由了,自由到没有一个大家都用的工具来开发程序,有人喜欢用Vim,有人喜欢用Emacs,有人用原生的gdb调试,有人用可视化的insight。于是就羡慕iOS和Android开发者们,他们有苹果和Google官方开发的XCode和AndroidStudio,几乎做到傻瓜化开发。但其实,以我在Linux下开发的习惯,使用QtCreator这一神器,同样可以使得我们将注意力集中在代码编写上,只是需要费些时间搭建环境。以下是我在Ubuntu1404的环境中搭建的过程,希望可以对大家有所帮助。
Qt Creator For 嵌入式Linux搭建流程
1.安装QtCreator
2.编译Qt for embbed
3.编译gdb及gdbserver
4.使用QtCreator创建C++工程
5.远程调试嵌入式Linux中的程序
1.安装QtCreator
首先从Qt官网下载最新的QtCreator离线安装包,使用目前最新的3.5.1版本。
下载地址:https://www.qt.io/cn/download-open-source/
在ubuntu中安装好后,启动QtCreator。
2.编译Qt for embbed
有人要问,我的项目里不需要使用Qt框架,为何还要编译Qt for embbed?那是因为使用QtCreator创建工程的时候,有两种生成Makefile的方式,一种是qmake一种是cmake。qmake工具是Qt提供的,用起来很方便,而cmake功能强大但用起来很麻烦。通常来说使用qmake即可,所以为了得到我们需要的qmake工具,需要编译对应版本的Qt。需要下载qt-everywhere-opensource-src-4.8.7.tar.gz。
下载地址:http://download.qt.io/official_releases/qt/4.8/4.8.7/
解压后,创建一个my_build.sh的文件,内容为
#./configure -confirm-license -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -release -opensource -fast -stl -no-accessibility -no-scripttools -no-mmx -no-multimedia -no-svg -no-3dnow -no-sse -no-sse2 -no-libmng -no-libtiff -no-multimedia -silent -qt-libpng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demos -nomake translations -no-nis -no-cups -no-iconv -no-dbus -no-openssl -little-endian -qt-freetype -depths all -qt-kbd-linuxinput -no-glib -qt-zlib -no-phonon -no-phonon-backend -no-webkit -no-javascript-jit -no-sql-db2 -no-sql-ibase -no-sql-oci -no-sql-odbc -no-sql-psql -qt-sql-sqlite -plugin-sql-sqlite -no-sql-sqlite2 -no-sql-mysql -no-sql-tds -no-neon -no-qt3support -no-mouse-linuxtp -no-script -no-largefile -v
注意修改mkspecs/qws下对应文件里的交叉编译工具。
随后
#make
#make install
如果一切顺利,则会在/usr/local/Trolltech/QtEmbedded-4.8.7-arm/bin下生成我们需要的qmake工具。
3.编译gdb及gdbserver
前面两点完成以后,就可以使用QtCreator来作为IDE编写和编译C/C++程序了,但最重要的是,我们需要用QtCreator作为可视化调试工具,这时候就需要编译gdb及gdbserver了。
首先在
ftp://ftp.gnu.org/gnu/gdb/
里下载gdb-7.11,下载完成解压后,执行
. - - - - - - - - - - - -
其中–prefix后是安装gdb和gdbserver的路径。–with-python这句很重要,如果没有的话,在QtCreator中是无法进行远程调试的。之后执行
#make
#make install
在安装路径下bin/里就能看到arm-linux-gnueabihf-gdb,此为ubuntu中使用的gdb,而arm板子上还需要一个gdbserver。此时
#cd gdb/gdbserver
#./configure --target=arm-linux-gnueabihf --host=arm-linux-gnueabihf
#make CC=arm-linux-gnueabihf-gcc
此时会在当前目录生成gdbserver,这就是板子上要用的gdbserver工具。
4.使用QtCreator创建C++工程及远程调试嵌入式Linux中的程序
当前面的准备工作都完成的时候,大功即将告成。这时候只需在安装的QtCreator中配置好gcc和gdbserver,便可以尽情使用它来调试编写程序。
点击QtCreator中的工具->选项,出现以下对话框:
点击QtVersions,添加,选择刚才编译好的Qt for embedd中生成的qmake;
点击编译器,添加gcc,选择编译arm板子用的gcc交叉编译工具,点击apply;
再点击Debuggers,新增,选择刚才编译出来的ubuntu使用的gdb;
点击构建套件,选择好设备、编译器、调试器、Qt版本,点击OK。
此时创建新的工程时,选择Non-Qt Project->Plain C++ Application,选择qmake,此时创建的工程便可以使用Qt来编译啦!
5.远程调试嵌入式Linux中的程序
将编译好的gdbserver放在arm板子中,在板子里执行
#/sbin/gdbserver 192.168.77.110:45544 test
ip为ubuntu的ip,端口要和QtCreator中设置的端口一致。
此时点击QtCreator中的调试->开始调试->attach to Running debug server…,出现下图:
在gdb调试的时候,需要载入嵌入式对应的动态链接库,在
Addtional Attach Command里设置好对应的 sysroot和solib-search-path,便可以正确载入对应的动态库
在此对话框填写端口号,本地执行文档,工作目录,再点击OK,便可以图形化远程调试arm板子中的程序了!爽!