• gcc 交叉工具链中工具使用(arm-linux-xxx)


    在Ubuntu系统中使用 gcc 系列工具是在PC机上使用

    arm-linux-gcc 编译的目标 是在 arm CPU上使用

    一。安装交叉编译工具链

    1. 编译工具怎么获取

      1)从官网 http://mirror.hust.edu.cn/gnu/gcc/

       通过工具生成 http://crosstool-ng.org/download/crosstool-ng/

    2. 交叉编译工具安装

        1$ vi ~/.bashrc  最后一行 添加 export PATH=$PATH:/opt/gcc-4.9.4/bin/   重启终端 即可生效

        2)在终端直接执行  $ export PATH=$PATH:/opt/gcc-4.9.4/bin/     只在当前终端生效

        3$ sudo vi /etc/profile  最后一行 添加 export PATH=$PATH:/opt/gcc-4.9.4/bin/    重新登录 即可生效

     

    二。交叉工具链其他工具使用(arm-linux-xxx

    1. 查看.elf格式文件:arm-linux-readelf a.out   elf 读取文件格式头,内容包括大小端,什么架构,是否是可执行程序(gcc工具直接编译生成的就是elf文件,a.out
    2. arm-linux-size a.out 读取各段大小
    3. 格式转换命令:arm-linux-objcopy -O binary a.out a.bin  砍头操作把调试信息删除
    4. 反汇编命令:arm-linux-objdump -D -S a.out > a.s  编译需加 -g)
    5. 列出符号清单:arm-linux-nm a.out编译需加 -g)

    参数说明:大写表示非静态  static 小写

    T/t   -------  代码段

    D/d  ------   数据段

    B/b   ------   bss

    R/r   --------  只读数据段

      6. 通过pc中的地址显示行号:arm-linux-addr2line a.out编译需加 -g

      7. 去掉调试信息(瘦身):arm-linux-strip a.out

      8.    提取程序中的字符串:arm-linux-strings  a.out  

        9.    制作库:arm-linux-ar 

      10. 链接器:arm-linux-ld 

     链接:https://www.crifan.com/files/doc/docbook/cross_compile/release/html/cross_compile.html 

    三.GDB调试:

    gdb 执行程序名 ------ 启动调试

    start单步执行程序 :      start

    break 打断点 :       b 行号 ----  例子:b 23

    info 获取内容: 获取断点编号: info b

    delete删除断点:      d 编号

    list 显示程序内容 :   l 

    next单步执行:       n 

    connect 继续执行:    c 

    print 打印变量值:     p 变量 --例子: p num

    display 追踪某个变量值: display num 一直显示for循环中打印某个变量的变化

    info 获取追踪变量的编号 : info display

    undisplay 取消追踪的变量:  undisplay 编号

    进入函数体内部:         s 函数名

    跳出单次循环:           u

    Finish跳出当前的函数:    finish

    for循环中条件变量 i 设置成 10  :  set var i =10  相当于把i的循环条件执行了10

    quit退出gdb :

  • 相关阅读:
    Delphi 7下使用VT实现树型列表结合控件
    Spring:源码解读Spring IOC原理
    【HTTP】Fiddler(二)
    简单工厂模式、工厂方法模式、抽象工厂模式 之间的对比
    UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
    Tomcat 的context.xml
    Tomcat的context.xml说明、Context标签讲解
    Node.js
    区块链架构设计
    什么是区块链
  • 原文地址:https://www.cnblogs.com/electronic/p/11194319.html
Copyright © 2020-2023  润新知