(1)        编译平台:

ubuntu 16.04LTS

(2)        源码路径:

Index of /gnu/gdb

我这里下载的版本是gdb-8.2.tar.gz

(3)        解压后,进入gdb-8.2顶层目录如下:

/home/share/gdb-8.2
(4)        创建bin目录,用于存放编译产物

mkdir -p bin

(5)        配置configure

./configure --prefix=/home/share/gdb-8.2/bin --host=arm-linux-gnueabi LD=arm-linux-gnueabi-ld CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++
注意上述--host   LD   CC  CXX几个字段一定要写,不然会使用默认的gcc/ld/g++等

(6)make -j8 && make install

产物目录如下:

/home/share/gdb-8.2/bin

如果要编译静态gdb(某些情况下,文件系统中 无elf解释器ld-linux.so.3,此时必须将elf文件,编译成静态),可如下修改:

vi ./gdb/Makefile.in 1918行,编译gdb时增加-static选项

gdb$(EXEEXT): gdb.o $(LIBGDB_OBS) $(ADD_DEPS) $(CDEPS) $(TDEPLIBS)
    $(SILENCE) rm -f gdb$(EXEEXT)
    $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \
    -static    -o gdb$(EXEEXT) gdb.o $(LIBGDB_OBS) \
        $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES)

如此生成的gdb即为静态,无需解释器可直接运行,如下:

file bin/bin/gdb
bin/bin/gdb: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=8c91445ef6ac5ac7be07b1aa104eee7409af47c6, not stripped

gdbServer的编译方法和gdb相同,但需要先进入gdbserver目录(/home/share/gdb-8.2/gdb/gdbserver),然后执行(5)(6)操作

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐