交叉编译工具选项说明

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 指定反汇编目标文件时使用的架构

例:

  1. 将ELF格式的文件转换为反汇编文件:

    arm-linux-objdump -D elf_file.elf > dis_file.dis

  2. 将二进制文件转换为反汇编文件:

    arm-linux-objdump -D -b binary -m arm bin_file.bin > dis_file.dis

嵌入式Linux应用开发完全手册读书笔记——交叉编译工具选项说明的更多相关文章

  1. 嵌入式Linux应用开发完全手册读书笔记——常用的命令

    嵌入式开发中常用的命令 grep命令 用法:grep [option] PATTERN [FILE...] 例如: 在内核目录下查找包含"request_irq"字样的文件 gre ...

  2. 嵌入式linux应用开发完全手册学习笔记一

    2015.3.25星期三 晴 有两个星期没写学习日记了,找个时间把这段时间做的电子词典和ARM小项目总结一下. 下面的知识点总结,U-BOOT:参考PDF文档:嵌入式linux应用开发完全手册 当虚拟 ...

  3. 嵌入式Linux应用开发完全手册之环境搭建

    @ 目录 0.下载源配置 1.电脑BIOS启动虚拟化 2.linux网卡查看与IP设置 3.windows NAT虚拟网络配置 4.修改 Ubuntu 的 mountd 端口 5.vim设置 6.Mo ...

  4. 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识

    驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...

  5. 嵌入式Linux驱动开发日记

    嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...

  6. Linux内核设计与实现 读书笔记 转

    Linux内核设计与实现  读书笔记: http://www.cnblogs.com/wang_yb/tag/linux-kernel/ <深入理解LINUX内存管理> http://bl ...

  7. Linux Shell脚本攻略 读书笔记

    Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...

  8. 如何使用eclipse进行嵌入式Linux的开发

    如何使用eclipse进行嵌入式Linux的开发 作者:曾宏安,华清远见嵌入式学院高级讲师. 如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux ...

  9. 《Kinect应用开发实战》读书笔记---干货集合

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/45029841 作者:ca ...

随机推荐

  1. qwt

    一. 1.下载地址https://sourceforge.net/projects/qwt/ 2.注意:官方提供qt安装包creator都是用MSVC编译(包括mingW版)的,所以Creator的插 ...

  2. 码云配置WebHook自动更新

    配置项目提交到git的时候自动同步服务器代码 一.在服务器项目跟目录新建文件hook.php 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $json =  ...

  3. Unity学习笔记_控制人物移动+摄像机跟随

    我想做的移动操作方式类似[流星蝴蝶剑].[龙之谷].[我的世界第三人称]的第三人称操作方式. 操作说明:W键会朝当前镜头方向前进,鼠标控制镜头旋转. 做前需知(先去稍微了解一下比较好): ①unity ...

  4. 动态中位数-POJ 3784

    题目: 依次读入一个整数序列,每当已经读入的整数个数为奇数时,输出已读入的整数构成的序列的中位数. 输入格式 第一行输入一个整数P,代表后面数据集的个数,接下来若干行输入各个数据集. 每个数据集的第一 ...

  5. java中volatile关键字的作用

    一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入.由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存 ...

  6. [转]Mybatis之TypeHandler使用教程

    Mybatis之TypeHandler使用教程 https://blog.csdn.net/jokemqc/article/details/81326109 深入浅出Mybatis系列(五)---Ty ...

  7. Symfony 服务配置 看这一篇就够了

    对于刚接触 Symfony 的新手来说,如何配置服务是一件很困难的事情.虽然在 Symfony 的新版本的框架中加入了自动加载(autowire),基本上满足了一般的需求,但是如果你想深入了解“服务” ...

  8. 【静态延迟加载】self关键字和static关键字的区别

    先来看下代码,从代码中发现问题.解决问题 //先实现一个手机工厂类 class Phone{ public static function setBrand(){ echo "Main Ph ...

  9. oracle多表关联删除的两种方法

    oracle多表关联删除的两种方法 第一种使用exists方法 delete from tableA where exits ( select 1 from tableB Where tableA.i ...

  10. WP8的新功能-通过一个程序来启动另一个程序

    Wp8对原来的WP7做了大量的优化...其中一个就包括Protocol Association,也就是通过uri来打开另外一个程序,这也就是说,我们可以做一个程序来启动另外一个程序了,如微信,QQ之类 ...