使用QTCreator进行ARM交叉编译和远程调试

1.在PC端安装ARM版本的g++、gcc编译工具(注意不同的ARM处理器对应不同的版本,DJI妙算对应的是g++-arm-linux-gnueabihf);

sudo apt-get install g++-arm-linux-gnueabihf

2.下载并编译安装gdb(下载地址)。Gdb是一款unix下的程序调试工具,可以让我们很方便地进行断点管理和单步运行调试,要想在PC端对ARM上的程序进行调试,需要在PC端编译安装ARM版的gdb,同时编译生成gdbserver放在ARM中;

安装gdb(其中/opt/arm-gdb指代gdb的安装路径,可自定义)

cd gdb-8.1

mkdir build

cd build

../configure --target=arm-linux-gnueabihf --prefix=/opt/arm-gdb

make -j8

sudo make install

安装成功之后可以在安装路径下找到gdb可执行文件

/opt/arm-gdb/bin/arm-linux-gnueabihf-gdb

3.编译gdbserver(这里不需要安装到本机,只需要将生成的gdbserver可执行程序copy到妙算的文件目录下)

cd /gdb-8.1/gdb/gdbserver/

mkdir build

cd build

../configure --target=arm-linux-gnueabihf

make -j8

编译完成后可在/gdb/gdbserver/build/路径下找到gdbserver

1.若出现以下错误

../linux-arm-low.c:130:21: fatal error: sys/reg.h: No such file or directory

#include

打开gdb-8.2/gdb/gdbserver/build/config.h文件,搜索HAVE_SYS_REG_H,在这行前面加//注释掉这行

2.若出现以下错误

In file included from ../../common/common-defs.h:90:0,

from ../server.h:22,

from ../linux-arm-low.c:19:

../linux-arm-low.c: In function ‘CORE_ADDR arm_sigreturn_next_pc(regcache*, int, int*)’:

../linux-arm-low.c:782:29: error: ‘__NR_sigreturn’ was not declared in this scope

gdb_assert (svc_number == __NR_sigreturn || svc_number == __NR_rt_sigreturn);

^

../../common/gdb_assert.h:33:13: note: in definition of macro ‘gdb_assert’

((void) ((expr) ? 0 : \

^~~~

../linux-arm-low.c: In function ‘CORE_ADDR get_next_pcs_syscall_next_pc(arm_get_next_pcs*)’:

../linux-arm-low.c:836:21: error: ‘__NR_sigreturn’ was not declared in this scope

if (svc_number == __NR_sigreturn || svc_number == __NR_rt_sigreturn)

^~~~~~~~~~~~~~

make: *** [linux-arm-low.o] Error 1

修改编译指令为“make CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ CXXFLAGS="-std=c++11

参考https://blog.csdn.net/hanq4998/article/details/84675718


4.打开QTcreator在工具--选项--设备中点击添加,按设备名、IP地址、用户名和密码配置自己的ARM设备(通用Linux类型的默认设备),GDB server executable为copy到ARM中的gdbserver路径,若copy到妙算/usr/bin/路径下则此处可省略。可点击Test检测是否成功连接。

使用QTCreator进行ARM交叉编译和远程调试_第1张图片

5.在工具--选项--Kits--Debuggers中添加ARM版的gdb调试器,路径即为刚刚安装好的gdb路径;

使用QTCreator进行ARM交叉编译和远程调试_第2张图片

6.在工具--选项--Kits中添加ARM的构建套件,填写名称,选择编译器为arm版本,选择调试器为刚刚添加的gdb调试器

使用QTCreator进行ARM交叉编译和远程调试_第3张图片

7.新建工程,选择ARM Kits,选择debug模式,编译即可断点调试运行

使用QTCreator进行ARM交叉编译和远程调试_第4张图片

使用QTCreator进行ARM交叉编译和远程调试_第5张图片

 

 

你可能感兴趣的:(操作系统)