现在的位置: 首页 > 综合 > 正文

交叉编译gdb7.4 for SAMSUNG GT-I9100

2013年08月11日 ⁄ 综合 ⁄ 共 2138字 ⁄ 字号 评论关闭

交叉链是我用crosstool_NG做的,非常简单好用,具体实现可以参考我之前写的文章。

下载源码后得到gdb-7.4目录,自己再新建一个build_gdb-7.4目录:

drwxr-xr-x 12 qj rebi 4096 2012-12-18 20:22 build_gdb-7.4/
drwxr-xr-x 15 qj rebi 4096 2012-12-18 19:52 gdb-7.4/

进入build_gdb-7.4目录执行configure:

../gdb-7.4/configure --prefix=/home/qj/tools/build_gdb-7.4/install --host=arm-linux CC=arm-unknown-linux-gnueabi-gcc LD=arm-unknown-linux-gnueabi-ld AR=arm-unknown-linux-gnueabi-ar LDFLAGS=Wl,-dynamic-linker=/data/app/ld-linux.so.3

之后make

make install

会在build_gdb-7.4目录下生成install目录,把gdb拷走就行了。

可以看到,gdb依赖于如下这几个动态库,所以需要从交叉链的目录下搜索到这几个库也一同上传到手机上。当然,ld-linux.so.3也是必须的。

qj@king:~/x-tools$ readelf -a gdb | grep library
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]

通过下面的命令可以确认一下,我们指定的linker是否正确:

qj@king:~/x-tools$ readelf -l gdb

Elf file type is EXEC (Executable file)
Entry point 0xb66c
There are 10 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  EXIDX          0x3618d8 0x003698d8 0x003698d8 0x008f8 0x008f8 R   0x4
  PHDR           0x000034 0x00008034 0x00008034 0x00140 0x00140 R E 0x4
  INTERP         0x000174 0x00008174 0x00008174 0x00018 0x00018 R   0x1
      [Requesting program interpreter: /data/app/ld-linux.so.3]
  LOAD           0x000000 0x00008000 0x00008000 0x3621d4 0x3621d4 R E 0x8000
  LOAD           0x362ef4 0x00372ef4 0x00372ef4 0x091a8 0x23c9c RW  0x8000
  DYNAMIC        0x362f00 0x00372f00 0x00372f00 0x00100 0x00100 RW  0x4
  NOTE           0x00018c 0x0000818c 0x0000818c 0x00020 0x00020 R   0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x4
  GNU_RELRO      0x362ef4 0x00372ef4 0x00372ef4 0x0010c 0x0010c R   0x1
  LOOS+5041580   0x000000 0x00000000 0x00000000 0x00000 0x00000     0x4

 Section to Segment mapping:
  Segment Sections...
   00     .ARM.exidx
   01
   02     .interp
   03     .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.extab .ARM.exidx .eh_frame
   04     .init_array .fini_array .jcr .dynamic .got .data .bss
   05     .dynamic
   06     .note.ABI-tag
   07
   08     .init_array .fini_array .jcr .dynamic
   09
qj@king:~/x-tools$
PS:后来经过测试,用同样的方法gdb7.5也顺利移植到我的I9100上去了。我估计对其它Android平台来说应该是一样的通用。

抱歉!评论已关闭.