本篇将介绍GDB的交叉编译,提供各个平台的编译环境,适合于各个平台编译。
本篇用的gdb编译的版本为7.9.1,依赖的ncurses库的版本为6.0
Makefile的内容
TOOLS_TOP_DIR := $(shell pwd)
TOOL_TAR_BALL := gdb-7.9.1.tar.gz
TOOL_TAR_BALL2 := ncurses-6.0.tar.gz
TOOL_NAME := gdb-7.9.1
TOOL_NAME2 := ncurses-6.0
TOOL_BIN := inst
TOOL_BIN2 := bin
OSDRV_CROSS ?= arm-hisiv100nptl-linux
#OSDRV_CROSS_CFLAGS ?= -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4
all:
-rm $(TOOLS_TOP_DIR)/$(TOOL_NAME) -rf;
-rm $(TOOLS_TOP_DIR)/$(TOOL_NAME2) -rf;
tar -xf $(TOOL_TAR_BALL2);
mkdir -p $(TOOLS_TOP_DIR)/$(TOOL_BIN)/;
pushd $(TOOLS_TOP_DIR)/$(TOOL_NAME2)/; \
./configure --host=$(OSDRV_CROSS) CFLAGS="$(OSDRV_CROSS_CFLAGS)" CPPFLAGS="-P" \
LDFLAGS="$(OSDRV_CROSS_CFLAGS)" --prefix=$(TOOLS_TOP_DIR)/$(TOOL_BIN)/; \
make -j > /dev/null; \
make install;\
popd;
tar -xf $(TOOL_TAR_BALL);
mkdir -p $(TOOLS_TOP_DIR)/$(TOOL_BIN)/;
pushd $(TOOLS_TOP_DIR)/$(TOOL_NAME)/; \
./configure --host=$(OSDRV_CROSS) CFLAGS="$(OSDRV_CROSS_CFLAGS) -lm"\
LDFLAGS="$(OSDRV_CROSS_CFLAGS)" --disable-tui\
LDFLAGS=-L$(TOOLS_TOP_DIR)/$(TOOL_BIN)/lib --prefix=$(TOOLS_TOP_DIR)/$(TOOL_BIN2); gdb_cv_prfpregset_t_broken=no \
make -j > /dev/null; \
make install;\
popd;
cp $(TOOLS_TOP_DIR)/$(TOOL_NAME)/gdb/gdb $(TOOLS_TOP_DIR)/gdb-$(OSDRV_CROSS) -rf; \
.PHONY: clean
clean:
-pushd $(TOOLS_TOP_DIR)/$(TOOL_NAME)/ &&\
make -C $(TOOLS_TOP_DIR)/$(TOOL_NAME)/ clean && \
popd
-pushd $(TOOLS_TOP_DIR)/$(TOOL_NAME2)/ &&\
make -C $(TOOLS_TOP_DIR)/$(TOOL_NAME2)/ clean && \
popd
.PHONY: distclean
distclean:
-rm $(TOOLS_TOP_DIR)/$(TOOL_NAME) -rf;
-rm $(TOOLS_TOP_DIR)/$(TOOL_NAME2) -rf;
-rm $(TOOLS_TOP_DIR)/$(TOOL_BIN) -rf;
-rm $(TOOLS_TOP_DIR)/$(TOOL_BIN2) -rf;
-rm $(TOOLS_TOP_DIR)/gdb-$(OSDRV_CROSS) -rf;
源码以及编译环境的网盘路径:
链接:https://pan.baidu.com/s/1b_KaHpY3GxAwj77fp6O-KQ
提取码:i0bw
gdb交叉编译步骤:
1、电脑解压文件
2、修改工具链,在makefie里只需修改OSDRV_CROSS ?= 工具链,比如OSDRV_CROSS ?= arm-hisiv100nptl-linux
3、make
以上步骤就可以生成对应平台的gdb。