嵌入式Linux应用开发完全手册读书笔记——交叉编译工具选项说明
交叉编译工具选项说明
arm-linux-gcc
一个c/c++文件要变成可执行文件需要4步:预处理 -> 编译 -> 汇编 -> 链接;
在使用arm-linux-gcc时的常用选项:
| 可使用的选项 | 功能描述 |
|---|---|
| -c | 预处理、编译和汇编文件,但是不作链接,GCC通过用“.o”替换源文件名的后缀“.c”,“.i”,“.s”等生成OBJ文件(.o文件) |
| -S | 编译后即停止,不进行汇编, 对于每个输入的非汇编语言文件,输出结果是汇编语言文件。默认情况下,GCC通过用“.s”替换源文件名后缀“.c”,“.i”等,产生汇编文件 |
| -E | 预处理后即停止,不进行编译 |
| -o | 指定输出文件的文件名,无论是预处理、编译、汇编还是链接,这个选项都可以使用 |
| -Wall | 基本打开了所有需要注意的警告信息 |
| -nostdlib | 不链接系统标准启动文件和标准库文件,只把指定的文件传递给链接器,这个选项常用于编译内核、bootloader等程序,它们不需要启动文件、标准库文件 |
| -g | 以操作系统的本地格式产生调试信息,供GDB调试使用 |
arm-linux-ld
用于将多个目标文件、库文件链接成可执行文件;
”-T“选项,可以直接使用它来指定代码段(-Ttext)、数据段(-Tdata)、bss段(-Tbss)的起始地址,也可以用来指定一个链接脚本,在链接脚本中进行更复杂的地址设置;
注:”-T“选项只用于链接Bootloader、内核等没有底层软件支持的软件,链接运行于操作系统之上的应用程序时,无需指定”-T“选项,它们使用默认的方式进行链接;
arm-linux-objcopy
用来复制一个目标文件的内容到另一个文件中,可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换;
常用arm-linux-objcopy来将ELF格式的可执行文件转换为二进制文件;
格式:-O bfdname 或 --output-target=bfdname(使用指定的格式来输出文件,bfdname是BFD库中描述的标准格式名,例”arm-linux-objcopy -O binary xxx.elf xxx.bin“);
arm-linux-objdump
用于显示二进制文件信息,常用于查看反汇编代码;
常用选项是:
| 选项 | 功能描述 |
|---|---|
| -b | 指定目标码格式 |
| -D | 反汇编所有段 |
| -m | 指定反汇编目标文件时使用的架构 |
例:
将ELF格式的文件转换为反汇编文件:
arm-linux-objdump -D elf_file.elf > dis_file.dis
将二进制文件转换为反汇编文件:
arm-linux-objdump -D -b binary -m arm bin_file.bin > dis_file.dis
嵌入式Linux应用开发完全手册读书笔记——交叉编译工具选项说明的更多相关文章
- 嵌入式Linux应用开发完全手册读书笔记——常用的命令
嵌入式开发中常用的命令 grep命令 用法:grep [option] PATTERN [FILE...] 例如: 在内核目录下查找包含"request_irq"字样的文件 gre ...
- 嵌入式linux应用开发完全手册学习笔记一
2015.3.25星期三 晴 有两个星期没写学习日记了,找个时间把这段时间做的电子词典和ARM小项目总结一下. 下面的知识点总结,U-BOOT:参考PDF文档:嵌入式linux应用开发完全手册 当虚拟 ...
- 嵌入式Linux应用开发完全手册之环境搭建
@ 目录 0.下载源配置 1.电脑BIOS启动虚拟化 2.linux网卡查看与IP设置 3.windows NAT虚拟网络配置 4.修改 Ubuntu 的 mountd 端口 5.vim设置 6.Mo ...
- 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识
驱动开发读书笔记. 0.06 嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...
- 嵌入式Linux驱动开发日记
嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...
- Linux内核设计与实现 读书笔记 转
Linux内核设计与实现 读书笔记: http://www.cnblogs.com/wang_yb/tag/linux-kernel/ <深入理解LINUX内存管理> http://bl ...
- Linux Shell脚本攻略 读书笔记
Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...
- 如何使用eclipse进行嵌入式Linux的开发
如何使用eclipse进行嵌入式Linux的开发 作者:曾宏安,华清远见嵌入式学院高级讲师. 如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux ...
- 《Kinect应用开发实战》读书笔记---干货集合
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/45029841 作者:ca ...
随机推荐
- ffmpeg 编译集成libfdk-aac
目录 1. 编译libfdk-aac 2. 编译ffmpeg 1. 编译libfdk-aac 下载源码:$ git clone https://github.com/mstorsjo/fdk-aac. ...
- 图像欧拉数计算 matlab实现
EUL = C - H 其中EUL表示欧拉数 C表示对象数 H表示孔洞数 欧拉数常用来识别数字: 识别数字 8 ,8 的欧拉数为 -1 ,不同于0,1,2,3,4,5,6,7,9 close all ...
- C语言字符串之无重复字符的最长子串
题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 输入: "abcabcbb" 输出: 解释: 因为无重复字符的最长子串是 . 输入: " ...
- 神经网络与数字货币量化交易系列(1)——LSTM预测比特币价格
首发地址:https://www.fmz.com/digest-topic/4035 1.简单介绍 深度神经网络这些年越来越热门,在很多领域解决了过去无法解决的难题,体现了强大的能力.在时间序列的预测 ...
- c++学习笔记_2
前言:本笔记所对应的课程为中国大学mooc中北京大学的程序设计与算法(三)C++面向对象程序设计,主要供自己复习使用,且本笔记建立在会使用c和java的基础上,只针对与c和java的不同来写 第二章 ...
- C#实现排列、组合
排列组合的概念 排列:从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(Arrangement). 组合:从m个不同的元素中,任取n(n≤m)个元 ...
- poj1410(判断线段和矩形是否相交)
题目链接:https://vjudge.net/problem/POJ-1410 题意:判断线段和矩形是否相交. 思路:注意这里的相交包括线段在矩形内,因此先判断线段与矩形的边是否相交,再判断线段的两 ...
- Python解Leetcode: 539. Minimum Time Difference
题目描述:给定一个由时间字符组成的列表,找出任意两个时间之间最小的差值. 思路: 把给定的链表排序,并且在排序的同时把60进制的时间转化成十进制整数: 遍历排序的数组,求出两个相邻值之间的差值: 求出 ...
- 第八章 ZYNQ-MIZ701 软硬调试高级技巧
软件和硬件的完美结合才是SOC的优势和长处,那么开发ZYNQ就需要掌握软件和硬件开发的调试技巧,这样才能同时分析软件或者硬件的运行情况,找到问题,最终解决.那么本章将通过一个简单的例子带大家使用v ...
- mac电脑上从终端命令行进入电脑里U盘目录下
一般Mac电脑上u盘都在 Volumes 目录下,所以进入u盘可按如下命令: cd /Volumes/u盘名称