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)
- 查看.elf格式文件:arm-linux-readelf a.out elf 读取文件格式头,内容包括大小端,什么架构,是否是可执行程序(gcc工具直接编译生成的就是elf文件,a.out)
- arm-linux-size a.out 读取各段大小
- 格式转换命令:arm-linux-objcopy -O binary a.out a.bin 砍头操作把调试信息删除
- 反汇编命令:arm-linux-objdump -D -S a.out > a.s (编译需加 -g)
- 列出符号清单: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 : q
gcc 交叉工具链中工具使用(arm-linux-xxx)的更多相关文章
- 交叉编译工具链介绍《Building Embedded Linux Systems》
1.前言 配置和编译一个合适的GNU工具链是相对复杂的并且需要很精细的操作,包括你需要对不同软件库之间的依赖关系.它们的各自的任务,不同软件库版本情况都有比较好的了解,编译工具链是一个乏味的工作. 2 ...
- Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install gcc-arm-linux-gnueabi 前提是你的Ubuntu系统版本是官网支持的最新的版本, ...
- 【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
原文网址:http://www.cnblogs.com/muyun/p/3370996.html 一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install ...
- 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远 ...
- linux driver ------ 交叉工具链(cross toolchain)
在 ARM Linux 的开发中,人们趋向于使用 Linaro(http://www.linaro.org/)工具链团队维护的 ARM 工具链,它以每月一次的形式发布新的版本,编译好的可执行文件可以网 ...
- 为DS5添加新的gcc工具链
环境: 步骤: 1.下载mingw32版本的工具链 下面有两个下载工具链的网站: ARM官网的: https://developer.arm.com/tools-and-software/open-s ...
- GNU 交叉工具链的介绍与使用
常用工具介绍 名称 归属 作用 armlinuxas binutils 编译 ARM 汇编程序 armlinuxar binutils 把多个.o 合并成一个.o 或静态库(.a) arml ...
- Crosstool-ng制作交叉编译工具链
Crosstool-ng制作交叉编译工具链 交叉编译器可以用现成的,比如CodeSourcery制作的交叉编译器,也可以自己制作,一般是用kernel+gcc+glibc+binutils的源码包来编 ...
- 使用GNU工具链进行嵌入式裸机开发
Embedded-Programming-with-the-GNU-Toolchain Vijay Kumar B. vijaykumar@bravegnu.org 翻译整理:thammer gith ...
随机推荐
- Jade To Pug过程中的一个小问题
最近在使用jade+express+typescript搭建一个博客项目,在使用jade-bootstrap项目时出现了一个问题 在使用其中的carousel时,发现其中的变量并没有转义 +carou ...
- fork/join并发编程
Fork & Join 的具体含义 Fork 一词的原始含义是吃饭用的叉子,也有分叉的意思.在Linux 平台中,函数 fork()用来创建子进程,使得系统进程可以多一个执行分支.在 Java ...
- 设置intellij IDEA编辑框背景色
首先是打开idea开发工具,然后点击左上角的File,选择Settings设置 应用即时生效,无需重启idea
- JAVA代码覆盖率采集与分析方案
原文地址-> http://m.blog.csdn.net/article/details?id=48688763
- 【NLP新闻-2013.06.03】New Book Where Humans Meet Machines
英语原文地址:http://nlp.hivefire.com/articles/share/39865/ 注:本人翻译NLP新闻只为学习专业英语和扩展视野,如果翻译的不好,请谅解! (我挺想看这本书的 ...
- VS2015 Bad Request解决方法
新获取的项目,使用vs2015启动项目,遇到只能用localhost:xxxx的方式访问,使用192.168.**.**:xxxx这样ip+端口的方式无法访问的情况 原因:vs没有做出相应的配置 解决 ...
- JS中数据结构之链表
1.链表的基本介绍 数组不总是组织数据的最佳数据结构,在很多编程语言中,数组的长度是固定的,所以当数组已被数据填满时,再要加入新的元素就会非常困难.在数组中,添加和删除元素也很麻烦,因为需要将数组中的 ...
- BZOJ 3294: [Cqoi2011]放棋子(计数dp)
传送门 解题思路 设\(f[i][j][k]\)表示前\(k\)个颜色的棋子占领了\(i\)行\(j\)列的方案数,那么转移时可以枚举上一个颜色时占领的位置,\(f[i][j][k]=\sum\lim ...
- BUUCTF | [HCTF 2018]admin
首先爬一遍整个网站,发现有没注册的时候有“login”,"register",这两个页面,注册一个123用户登录后发现有 "index“,”post“,”logout“, ...
- LINUX时间服务器搭建
一. 因 为工作需要,偶需要将搭建一个NTP服务器来进行时间同步的测试,在公司里一直以为非常的难搭建,也是刚刚工作的缘故,就等正导师给帮着弄一台服务器,结 果导师给了我一个系统叫Fedora,让我偶自 ...