ARM编程基础

一、需要用到的工具:

编译工具:arm-linux-gcc 

链接工具:arm-linux-ld

格式转换工具:arm-linux-objcopy

反汇编器:arm-linux-objdump

文件信息查看:arm-linux-readelf

下载工具:dnw

调试工具:arm-linux-gdb

JLink驱动:JLinkGDBServer

二、工具说明(以hello.c为例

      1)arm-linux-gcc工具时只编译不链接,使其生成目标文件即可(.o文件)。

            其用法:arm-linux-gcc  hello.c -o hello

      2)arm-linux-lds来完成链接.

            其用法为:arm-linux-ld -T*.lds(链接脚本文件)  -o *.elf  *.o *.o(所需要链接的文件)

      3)  arm-linux-objcopy使ELF文件变为bin文件。

           链接后的文件为.elf格式的,这并不能在ARM上直接运行,能在ARM上运行的是二进制文件,格式为.bin。此时,还需另一工具arm-linux-objcopy来完成转换,使ELF文件变为bin文件。

            其用法如下:arm-linux-objcopy -O binary *.elf *.bin    //-O binary意味输出二进制文件

            至此,能在ARM上运行的可执行的文件就制作好了

      4)arm-linux-objdump反汇编器,即根据编译好的 代码来生成汇编代码。
            其用法:arm-linux-objdump -D -S  *.elf >dump  //其默认是将生成的代码输入到屏幕

            注:编译时加上调试信息(-g) 才会在反汇编时会有C的语句出现,如printf("hello world");的出现,C与汇编对应起来更容易查找错误所在 

     5)arm-linux-readelf工具可以用来查看elf格式文件的信息,如下

          [ymf@localhost example]$ arm-linux-readelf -a led.elf
          ELF Header:
                 Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
                 Class:                             ELF32
                 Data:                              2's complement, little endian
                 Version:                           1 (current)
                 OS/ABI:                            UNIX - System V
                 ABI Version:                       0
                 Type:                              EXEC (Executable file)
                 Machine:                           ARM
   由此信息可看到,此ELF文件使用平台为ARM,采用小端格式存储数据.

  arm-linux-readelf还可以用来查看所需的库文件,如下所示

         [ymf@localhost example]$ arm-linux-readelf -d hello

         Dynamic section at offset 0x450 contains 24 entries:

         Tag        Type                         Name/Value

         0x00000001 (NEEDED)                     Shared library: [libc.so.6]

        0x0000000c (INIT)                       0x8278

        0x0000000d (FINI)                       0x841c

三、调试工具

       1)安装GDB Server,还需在环境变量中增加其路径,使用如下命令.

       然后在其文件倒数第二行增加如下内容:
       export PATH=$PATH:/opt/arm-linux-gdb/bin
      注:因为在arm-linux-gcc中同样含有arm-linux-gdb工具,但此版本(6.8.50)并不能在arm中使用,需要在网上下载更高版        本的,而把arm-linux-gdb放在倒数第二行,是因为,我们需要优先使用专门下载的arm-linux-gdb工具,.bashrc最后两行        代码如下:

     export PATH=$PATH:/opt/arm-linux-gdb/bin

     export PATH=$PATH:/usr/local/share/arm_bin/4.3.2/bin

     在调用arm-linux-gdb时,同样会因为操作系统为64位,软件为32位,出现错误,如下
    arm-linux-gdb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or       directory
    使用如下命令安装所需32位库即可
    yum install xulrunner.i686

    2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值