嵌入式-GDB

交叉编译环境中编译出目标gdb:

1、fakeroot

2、导入交叉编译链

export TOOLCHAIN_BASE=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr

export TOOLCHAIN_LIB=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/arm-buildroot-linux-gnueabi/sysroot/lib

export PATH=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/bin/:/new_home/liyong/bin:/new_home/liyong/.local/bin:/usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/repo:/snap/bin

export CROSS_COMPILE=arm-buildroot-linux-gnueabi-

export CC=arm-buildroot-linux-gnueabi-gcc -mfloat-abi=soft

export CCC=arm-buildroot-linux-gnueabi-g++ -mfloat-abi=soft

export LD=arm-buildroot-linux-gnueabi-ld

export AR=arm-buildroot-linux-gnueabi-ar

export STRIP=arm-buildroot-linux-gnueabi-strip

export RANLIB=arm-buildroot-linux-gnueabi-ranlib

export SYSROOT=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/arm-buildroot-linux-gnueabi/sysroot

export LD_LIBRARY_PATH=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/lib:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot

#添加 termcap

export LDFLAGS="-L/new_home/liyong/build/termcap-1.3.1/libtermcap.a"

export CFLAGS="-I/new_home/liyong/build/termcap-1.3.1/libtermcap.a"

注: libtermcap.a 需要另外生成

其他的一些没必要的选项

export GDB=arm-buildroot-linux-gnueabi-gdb

export OBJCOPY=arm-buildroot-linux-gnueabi-objcopy

export OBJDUMP=arm-buildroot-linux-gnueabi-objdump

export NM=arm-buildroot-linux-gnueabi-nm

export M4=m4

export CXXFLAGS=" -O2 -fexpensive-optimizations -frename-registers -fomit-frame-pointer -fstack-protector-strong -pie -fpie -Wa,--noexecstack -fvisibility-inlines-hidden"

export CXXFLAGS=" -O2 -fPIC -fexpensive-optimizations -frename-registers -fomit-frame-pointer -fstack-protector-strong -pie -fpie -Wa,--noexecstack -fvisibility-inlines-hidden"

export CXFLAGS=" -O2 -fPIC -fexpensive-optimizations -frename-registers -fomit-frame-pointer -fstack-protector-strong -pie -fpie -Wa,--noexecstack -fvisibility-inlines-hidden"

export ARCH_CFLAGS=

export ARCH=arm

export LIBGCC=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/lib/gcc/arm-buildroot-linux-gnueabi/4.9.3/libgcc.a

export CROSSCOMPILE_FLAG=1


#new 
export TOOLCHAIN_BASE=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr
export TOOLCHAIN_LIB=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/arm-buildroot-linux-gnueabi/sysroot/lib
export PATH=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/bin/:/new_home/liyong/bin:/new_home/liyong/.local/bin:/usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/repo:/snap/bin
export CROSS_COMPILE=arm-buildroot-linux-gnueabi-
export CC=arm-buildroot-linux-gnueabi-gcc -mfloat-abi=soft
export CCC=arm-buildroot-linux-gnueabi-g++ -mfloat-abi=soft
export LD=arm-buildroot-linux-gnueabi-ld
export AR=arm-buildroot-linux-gnueabi-ar
export STRIP=arm-buildroot-linux-gnueabi-strip
export RANLIB=arm-buildroot-linux-gnueabi-ranlib
export SYSROOT=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/arm-buildroot-linux-gnueabi/sysroot
export LD_LIBRARY_PATH=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/lib:/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot
#添加 termcap
export LDFLAGS="-L/new_home/liyong/build/termcap-1.3.1/libtermcap.a"
export CFLAGS="-I/new_home/liyong/build/termcap-1.3.1/libtermcap.a"

export GDB=arm-buildroot-linux-gnueabi-gdb
export OBJCOPY=arm-buildroot-linux-gnueabi-objcopy
export OBJDUMP=arm-buildroot-linux-gnueabi-objdump
export NM=arm-buildroot-linux-gnueabi-nm
export M4=m4
export CXXFLAGS=" -O2 -fexpensive-optimizations -frename-registers -fomit-frame-pointer -fstack-protector-strong -pie -fpie -Wa,--noexecstack -fvisibility-inlines-hidden"
export CXXFLAGS=" -O2 -fPIC -fexpensive-optimizations -frename-registers -fomit-frame-pointer -fstack-protector-strong -pie -fpie -Wa,--noexecstack -fvisibility-inlines-hidden"
export CXFLAGS=" -O2 -fPIC -fexpensive-optimizations -frename-registers -fomit-frame-pointer -fstack-protector-strong -pie -fpie -Wa,--noexecstack -fvisibility-inlines-hidden"
export ARCH_CFLAGS=
export ARCH=arm
export LIBGCC=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr/lib/gcc/arm-buildroot-linux-gnueabi/4.9.3/libgcc.a
export CROSSCOMPILE_FLAG=1

#configuration

./configure --host=arm-linux --enable-shared --without-x --disable-gdbtk --disable-tui --without-included-regex --without-included-gettext 


脚本记录:

export TOOLCHAIN_BASE=/opt/trendchip/buildroot-gcc493_glibc222_arm32_32bServer/usr
export TOOLCHAIN_LIB=$(TOOLCHAIN_BASE)/arm-buildroot-linux-gnueabi/sysroot/lib
export HOST=arm-linux
export CROSS=arm-buildroot-linux-gnueabi-
export PATH :=$(TOOLCHAIN_BASE)/bin/:$(PATH)
export CROSS_COMPILE=$(CROSS)
export CC=$(CROSS)gcc -mfloat-abi=soft
export CCC=$(CROSS)g++ -mfloat-abi=soft
export LD=$(CROSS)ld
export LD = $(CROSS)ld
export AR=$(CROSS)ar
export STRIP=$(CROSS)strip
export RANLIB = $(CROSS)ranlib
export SYSROOT=$(TOOLCHAIN_BASE)/arm-buildroot-linux-gnueabi/sysroot
export LD_LIBRARY_PATH:=$(TOOLCHAIN_BASE)/lib:$(LD_LIBRARY_PATH)
export ARCH_CFLAGS =

liyong:
    echo "Build liyong"
    echo "liyong"
    $(MAKE) -C gdb-7.1/
    if test -e gdb-7.1/gdb; \
    then echo "Compile liyong success"; \
    else echo "Compile liyong error!"; exit 1; \
    fi  

3、在gdb工程文件下,执行./configure --host=arm-linux 生成目标makefile文件

4、执行make 生成gdb 目标文件,生成的gdb文件在gdb目录下

6、导入板子测试

7、测试程序

Linux下,程序的发布方式有两种,debug模式和release模式,通过gcc/g++编译形成的可执行文件默认是release模式的,也就是说不能够进行调试,因此要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,才会在生成的可执行目标文件中带上.debug节

对于已经生成的源文件,可以通过下面的命令查看目标文件中的信息

readelf -S a.out | grep -i debug


readelf -S [filename] | grep -i debug
// readelf 用于读取和显示 ELF (Executable and Linkable Format) 文件信息
// -S 显示 ELF 文件的所有节(section)的信息
 
// grep -i 选项表示忽略大小写

使用arm进行编译

arm-buildroot-linux-gnueabi-gcc -mfloat-abi=soft -g liyong.c

启动gdb成功之后,最后一行信息显示如下,说明调试信息读取成功,可以进行调试 

Reading symbols from /home/hqs/code/April/3/test.debug...done.

8、GDB调试手册:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞个项目

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值