linux系统 qt调试,Linux下Qt Creator远程调试(redhat5+mini6410)
當(dāng)我們開發(fā)嵌入式系統(tǒng)下的Qt應(yīng)用程序時,有時候不能在虛擬機(jī)上進(jìn)行調(diào)試,這時候我們需要通過遠(yuǎn)程調(diào)試的方式在PC上調(diào)試嵌入式系統(tǒng)下的Qt應(yīng)用程序。這樣就產(chǎn)生了交叉調(diào)試。
本文環(huán)境介紹:
虛擬機(jī):vmware8.0.4 build-744019
Linux操作系統(tǒng):Red Hat Enterprise Linux5
交叉編譯工具:arm-linux-gcc
目標(biāo)板:mini6410(友善提供),已移植Qt4.7
Qt Creator版本:qt creator-1.3.0
Qt版本:qt-everywhere-opensource-src-4.7.0
一、設(shè)置NFS共享
交叉調(diào)試的前提需要設(shè)置NFS共享,在上位機(jī)下配置NFS服務(wù),建立NFS共享目錄。
1、PC機(jī)下開啟NFS服務(wù)
[root@localhost home]# service nfs restart
2、設(shè)置共享目錄
[root@localhost home]# vim /etc/exports
打開exports文件后,添加如下內(nèi)容:
/home/NFS?????? *(rw,sync,no_root_squash)
保存退出。
說明一下,上面的含義為:/home/NFS 表示我的共享目錄,* 表示任意的開發(fā)板的ip地址,rw表示可讀寫,sync表示同步,no_root_squash表示有root權(quán)限。
接下來使用如下命令使共享目錄生效:
[root@localhost home]# exportfs -ra
不信看看:
[root@localhost home]# exportfs -v
是不是出現(xiàn)了:/home/NFS?????? (rw,wdelay,no_root_squash,no_subtree_check),這樣就設(shè)置成功了共享目錄。
3、交叉編譯gdb(前提你的系統(tǒng)已經(jīng)安裝了交叉編譯工具鏈)
下載一個gdb源碼包(我的為:gdb-7.0a.tar.bz2),下載地址:在虛擬機(jī)下解壓并編譯:
[root@localhost toolchain]# tar jxvf gdb-7.0a.tar.bz2
解壓后進(jìn)入其目錄,然后
[root@localhost gdb-7.0]# ./configure --target=arm-linux -prefix=/opt/gdb7.0_arm
-prefix=/opt/toolchain表示安裝在/opt/gdb7.0_arm這個目錄下。
[root@localhost gdb-7.0]# make
[root@localhost gdb-7.0]# make install
這樣就安裝成功了,瞧瞧/opt/gdb7.0_arm中有bin、share、lib目錄,進(jìn)入bin目錄可以發(fā)現(xiàn)發(fā)現(xiàn):
修改環(huán)境變量:
在/etc/profile內(nèi)添加新生成的bin文件的路徑,如
export PATH=/opt/gdb7.0_arm/bin:$PATH
并設(shè)置生效:source /etc/profile
4.交叉編譯gdbserver
進(jìn)入/opt/gdb-7.0/gdb/目錄下,可以看到有個gdbserver目錄,進(jìn)入這個目錄,交叉編譯和安裝:
$./configure --target=arm-linux --host=arm-linux
$make
這樣gdbserver就安裝成功了,在此目錄下會生成可執(zhí)行文件gdbserver,將其拷貝至共享目錄/home/NFS。
5.拷貝libthread庫至共享目錄
交叉編譯工具鏈里有一個動態(tài)鏈接庫文件libthread_db-1.0.so,將其拷貝到/home/NFS/lib中(先在共享目錄下建立lib目錄),建立符號鏈接:
$ln -s libthread_db-1.0.so libthread_db.so
$ln -s libthread_db-1.0.so libthread_db.so.1
在目標(biāo)板開始mount之前先將此庫文件加入目標(biāo)板/etc/profile的庫文件搜索路徑LD_LIBRARY_PATH上。
三、目標(biāo)板上mount共享目錄
1.連接好開發(fā)板,設(shè)置好網(wǎng)絡(luò)(開發(fā)板IP:192.168.1.88,Linux系統(tǒng)IP :192.168.1.114,具體地址根據(jù)實際情況設(shè)定)
2.目標(biāo)板下執(zhí)行:
$mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.1.114:/home/NFS /mnt
mount上后,你可以在目標(biāo)板/mnt目錄下看到共享文件夾NFS,里面的內(nèi)容和Linux系統(tǒng)上的一樣。
四、交叉調(diào)試
1.配置工程
打開Linux系統(tǒng)下的Qt Creator,進(jìn)入Tools->options->Debugger,進(jìn)行如圖所示的配置。
將要調(diào)試的工程(比如說hello)拷貝到共享目錄NFS下,在Qt Creator內(nèi)打開,在左側(cè)projects欄選擇Build configuration for hello為arm模式的Debug(我的是qt_4.7_arm Debug),Edit Build Configuration進(jìn)行同樣配置。
2.啟用gdbserver
將gdbserver拷貝至目標(biāo)板/usr/sbin/目錄下,進(jìn)入/mnt/hello/目錄,執(zhí)行
$gdbserver 192.168.1.114:6666 hello -qws &
在終端顯示運行結(jié)果為
$Process hello created; pid = 797
Listening on port 6666
6666為通信端口號,自己設(shè),大于1024便可,其中pid每個人都會有所不同。
3.開始交叉調(diào)試
在Qt Creator菜單欄點擊Debug->Start Debugging->Start and Attach to Remote Application,出現(xiàn)如圖所示界面,按圖進(jìn)行配置。
192.168.1.88是目標(biāo)板的IP地址,端口號6666,arm為i386架構(gòu)。點擊OK,終端出現(xiàn)
Remote debugging from host 192.168.1.114,表示可進(jìn)行交叉調(diào)試了。
總結(jié)
以上是生活随笔為你收集整理的linux系统 qt调试,Linux下Qt Creator远程调试(redhat5+mini6410)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle报错-1,[Oracle报错
- 下一篇: cas单点登录-jdbc认证(三)