高通9x07平台linux,[MDM9X07] 交叉编译GDB

0 崩溃,崩溃!

应用崩溃,又无从下手的时候,逼着自己交叉编译mdm9x07平台的gdb。

1 环境准备

mdm9x07 toolchains

gdb-7.6.tar.gz

debian 8.1

$ wget https://ftp.gnu.org/gnu/gdb/gdb-7.6.tar.gz

2 配置

将交叉工具链配置到环境变量,例如:

export MDM9X07_PATH=/home/bb/tools/MDM9X07/usr/bin/arm-oe-linux-gnueabi

export PATH=${MDM9X07_PATH}:${PATH}

验证arm-oe-linux-gnueabi-gcc 是否可用

bb@bb:~$ arm-oe-linux-gnueabi-gcc -v

Using built-in specs.

COLLECT_GCC=arm-oe-linux-gnueabi-gcc

COLLECT_LTO_WRAPPER=/home/bb/tools/MDM9X07/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/lto-wrapper

Target: arm-oe-linux-gnueabi

... ... ... ... ...

gcc version 4.9.2 (GCC)

3 工作目录

$ export GDB_SRC=~/workbench/gdb/src

$ export GDB_BUILD=~/workbench/gdb/build

$ mkdir -pv ~/workbench/gdb

$ mkdir $GDB_SRC && mkdir $GDB_BUILD

$ cd $GDB_SRC

$ tar -pxzf gdb-7.6.tar.gz ~/workbench/gdb/src

4 环境变量

export TARGETMACH=arm-oe-linux-gnueabi

export CROSS=arm-oe-linux-gnueabi

export CC=${CROSS}-gcc

export LD=${CROSS}-ld

export AS=${CROSS}-as

另外因为是交叉编译,需要告诉编译器以及链接器查找路径,使用--sysroot=配置:

C 和C++都需要配置,gdb中子模块有用到c++的

export CFLAGS=--sysroot=/home/bb/tools/mdm9607

export CXXFLAGS=--sysroot=/home/bb/tools/mdm9607

5 配置

准备工作完成,开始生成makefile

./configure --with-build-sysroot=/home/bb/tools/mdm9607 --prefix=/home/bb/workbench/gdb/build --host=$TARGETMACH --target=$TARGETMACH --disable-tui

6 汇总编写make.sh

#!/bin/sh

export TARGETMACH=arm-oe-linux-gnueabi

export CROSS=arm-oe-linux-gnueabi

export CC=${CROSS}-gcc

export LD=${CROSS}-ld

export AS=${CROSS}-as

export CFLAGS=--sysroot=/home/bb/tools/me3630/mdm9607

export CXXFLAGS=--sysroot=/home/bb/tools/me3630/mdm9607

./configure --with-build-sysroot=/home/bb/tools/me3630/mdm9607 --prefix=/home/bb/workbench/gdb/build --host=$TARGETMACH --target=$TARGETMACH --disable-tui

7 安装

顺利的话,可编译通过。继续执行安装即可:

make install

在安装目录下能够看到有如下:

bb@bb:~/gdb$ tree ./

├── bin

│ ├── gdb

│ ├── gdbserver

│ └── run

├── include

│ ├── ansidecl.h

│ ├── bfd.h

│ ├── bfdlink.h

│ ├── dis-asm.h

│ ├── gdb

│ │ └── jit-reader.h

│ └── symcat.h

├── lib

│ ├── libarm-oe-linux-gnueabi-sim.a

│ ├── libbfd.a

│ ├── libbfd.la

│ ├── libiberty.a

│ ├── libopcodes.a

│ └── libopcodes.la

└── share

... ... ... ...

53 directories, 86 files

验证文件格式:

bb@bb:~/gdb/bin$ file gdb

gdb: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=5eb891638b2f00228d24f1ecffccbac40be558b0, not stripped

8 问题

不顺利则会出现一些错误,可能有:

arm-oe-linux-gnueabi-gcc 没有-v 和 -qversion 选项, 去掉

for ac_option in --version -v -V -qversion; do ==>

for ac_option in --version -v; do

当前系统无法执行编译后的程序

if { ac_try='./$ac_file' ==>

if { ac_try='file ./$ac_file'

注: 全篇核心在--sysroot配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值