今天调试新平台的时候,设备升级后挂了,发现没有编译过64位的gdb工具,那就写一篇文章记录一下编译步骤,以备后用。
1、确定目标平台参数
交叉编译链:aarch64-ca53-linux-gnu-gcc
$ aarch64-ca53-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/opt/novatek/aarch64-ca53-linux-gnueabihf-8.4.01/bin/aarch64-ca53-linux-gnu-gcc.br_real
COLLECT_LTO_WRAPPER=/opt/novatek/aarch64-ca53-linux-gnueabihf-8.4.01/bin/../libexec/gcc/aarch64-ca53-linux-gnu/8.4.0/lto-wrapper
Target: aarch64-ca53-linux-gnu
2、下载gdb源码并解压
下载地址:https://www.sourceware.org/gdb/download/
解压:
mkdir gdb-8.3
tar -xvf gdb-8.3.tar.gz -C gdb-8.3/
由于我之前下载过,我就不重新下了,以gdb-8.3为例,不同版本有差别
3、配置gdb参数
cd gdb-8.3/
./configure --prefix="$PWD/install" --host=aarch64-ca53-linux-gnu CC=aarch64-ca53-linux-gnu-gcc CXX=aarch64-ca53-linux-gnu-g++ LD=aarch64-ca53-linux-gnu-ld AR=aarch64-ca53-linux-gnu-ar
–host:对应目标平台参数中的Target
CC、CXX、LD、AR都是在Target
基础上添加后缀
4、编译
make -j4
说明:-j4是以4线程编译,可加快编译速度
5、安装
make install
如果文件太大,可以考虑使用strip瘦身一下
aarch64-ca53-linux-gnu-strip gdb
6、gbd可执行文件位置
在配置gdb参数时,我们指定了--prefix="$PWD/install"
,最终在gdb-8.3/install
目录下可以找到gdb文件,建议根据芯片平台重命名一下,我这里mv gdb gdb_98530
,主要怕跟其他平台的gdb
搞混淆。
7、题外话gdbserver
有时候设备内存不足,无法运行gdb的时候还想用gdb调试怎么办,我们可以使用远程调试的方式将gdbserver
放在设备中运行,在编译服务器上运行gdb
,连接到设备中的gdbserver
,进行调试。具体调试方法有空我写一个总结。