zoukankan      html  css  js  c++  java
  • 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 :

  • 相关阅读:
    开始程序猿的生涯了
    将博客搬至CSDN
    java如何修改java.library.path并且不重启jvm也能生效
    JCEF 如何修改右键菜单项(JCEF在右键菜单中添加开发者选项-show dev tools)
    JS调用JCEF方法
    java cef3 禁止右键菜单项
    [java报错]Could not instantiate listener XXXXXX
    ThinkPhp的搭建
    phpMyAdmin的配置
    铁路局12306余票查询的实现
  • 原文地址:https://www.cnblogs.com/electronic/p/11194319.html
Copyright © 2011-2022 走看看