(1) 编译平台:
ubuntu 16.04LTS
(2) 源码路径:
我这里下载的版本是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)操作