说明:
gcc是编译器,负责对c代码的编译, ld是连接器 负责将多个*.o的目标文件链接成elf可执行文件。elf可执行文件是unix常用的可执行文件类型,就像windows的exe文件。elf文件中有很多信息包括段信息还有头信息,这些信息对硬件是没有意义的,所以有的时候我们通过objcopy将elf转化成bin 文件加载到内存中运行,bin文件就是一个纯二进制文件,并且你可以通过objdump将elf文件来反汇编。

----------------------------------------------------------------------------------------------------------

arm-linux-gcc -wall -O2 -c -o $@ $<

-o 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件

-Wall 指定产生全部的警告信息

-O2 编译器对程序提供的编译优化选项,在编译的时候使用该选项,可以使生成的执行文件的执行效率提高

-c 表示只要求编译器进行编译,而不要进行链接,生成以源文件的文件名命名但把其后缀由 .c 或 .cc 变成 .o 的目标文件

-S 只激活预处理和编译,就是指把文件编译成为汇编代码

arm-linux-ld

直接指定代码段,数据段,BSS段的起始地址

-Ttest startaddr

-Tdata startaddr

-Tbss startaddr

示例:

Arm-linux-ld –Ttext 0x0000000 –g led.o –o led_elf

使用连接脚本设置地址:

Arm-linux-ld –Ttimer.lds –o timer_elf  $^

其中timer.lds 为连接脚本

完整的连接脚本格式:

SECTIONS{

Secname start ALING(aling) (NOLOAD):AT(ldaddr)

{contents} > region:phdr=fill

…..

}

arm-linux-objcopy被用来复制一个目标文件的内容到另一个文件中,可用于不同源文件的之间的格式转换

示例:

Arm-linux-objcopy –o binary –S elf_file bin_file

常用的选项:

1.input-file , outflie

输入和输出文件,如果没有outfile,则输出文件名为输入文件名

2.-l bfdname或—input-target=bfdname

用来指明源文件的格式,bfdname是BFD库中描述的标准格式名,如果没指明,则arm-linux-objcopy自己分析

3.-O bfdname 输出的格式

4.-F bfdname 同时指明源文件,目的文件的格式

5.-R sectionname 从输出文件中删除掉所有名为sectionname的段

6.-S 不从源文件中复制重定位信息和符号信息到目标文件中

7.-g 不从源文件中复制调试符号到目标文件中

arm-linux-objdump

查看目标文件(.o文件)和库文件(.a文件)信息

arm-linux-objdump -D -m arm led_elf > led.dis

-D 显示文件中所有汇编信息

-m machine
指定反汇编目标文件时使用的架构,当待反汇编文件本身没有描述架构信息的时候(比如S-records),这个选项很有用。可以用-i选项列出这里能够指定的架构

(笔记)arm-linux-gcc/ld/objcopy/objdump参数总结的更多相关文章

  1. arm-linux-gcc/ld/objcopy/objdump参数总结【转】

    arm-linux-gcc/ld/objcopy/objdump参数总结 转自:http://blog.csdn.net/muyuyuzhong/article/details/7755291 arm ...

  2. 【嵌入式】arm-linux-gcc/ld/objcopy/objdump参数概述

    arm-linux-gcc -o 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件   -Wall 指定产生全部的警告信息   -O2 编译器对程序提供的编译优化选项,在编译的时候使用该选项 ...

  3. Ubuntu12.4 64位 安装 arm linux gcc 4.3.2

    一.下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid ...

  4. makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解

    在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 led.bin ...

  5. makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解【转】

    转自:http://www.cnblogs.com/lifexy/p/7065175.html 在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 ...

  6. linux gcc 区分32位或64位编译 && 请问arm存储,是以小端格式还是以大端格式?

    linux gcc 区分32位或64位编译   Linux系统下程序如何区分是64位系统还是32位系统 经过对include的翻查,最后确定gcc以__i386__来 进行32位编码,而以__x86_ ...

  7. 【Linux笔记】Linux目录结构

    [Linux笔记]Linux目录结构   本文内容整理自网络,以作参考. /:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib ...

  8. HK32F030MF4P6的Linux GCC工具链和VSCode开发环境

    HK32F030MF4P6简介 航顺的 HK32F030MF4P6, TSSOP20封装, Arm Cortex M0 内核, 内建32MHz时钟, 16K Flash, 2K RAM(实际上可用的有 ...

  9. Linux GCC常用命令

    1简介 2简单编译 2.1预处理 2.2编译为汇编代码(Compilation) 2.3汇编(Assembly) 2.4连接(Linking) 3多个程序文件的编译 4检错 5库文件连接 5.1编译成 ...

随机推荐

  1. mingw环境添加mysql开发库

    今天碰巧要用到mysql进行开发,在windows的mingw平台. 0.下载mysql http://cdn.mysql.com/Downloads/MySQL-5.1/mysql-noinstal ...

  2. blocking

    package blockingtest; /** * Hello world! */public class Sync implements Runnable { int n; public sta ...

  3. 支付宝对账单下载Java正式商户调用

    package code; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; impo ...

  4. (原创)c++11改进我们的模式之改进观察者模式

    和单例模式面临的是同样的问题,主题更新的接口难以统一,很难做出一个通用的观察者模式,还是用到可变模板参数解决这个问题,其次还用到了右值引用,避免多余的内存移动.c++11版本的观察者模式支持注册的观察 ...

  5. BleedTree动画混合树[Unity]

    Unity在中土大陆的大肆推广能从广泛的中文翻译资料中看出.所以,手册才是王道. 游戏动画中的一个常见任务是在两个或更多相似运动之间混合.最佳的已知示例可能是根据角色速度混合行走和奔跑动画.另一个示例 ...

  6. Spark SQL利器:cacheTable/uncacheTable【转】

    转自:http://www.cnblogs.com/yurunmiao/p/4936583.html Spark相对于Hadoop MapReduce有一个很显著的特性就是“迭代计算”(作为一个Map ...

  7. MySQL load数据的时候自动更新时间

    MySQL load数据的时候自动更新时间 前提 CREATE TABLE table_name ( dt varchar(255) NULL , ctime timestamp NULL ON UP ...

  8. 【神经网络】Reducing the Dimensionality of Data with Neural Networks

    这篇paper来做什么的? 用神经网络来降维.之前降维用的方法是主成分分析法PCA,找到数据集中最大方差方向.(附:降维有助于分类.可视化.交流和高维信号的存储) 这篇paper提出了一种非线性的PC ...

  9. tf.square

    tf.square square( x, name=None ) 功能说明: 计算张量对应元素平方 参数列表: 参数名 必选 类型 说明 x 是 张量 是 half, float32, float64 ...

  10. C# winform打包(带数据库安装)<转>

    使用VS自带的打包工具,制作winform安装项目 开发环境:VS2008 Access 操作系统:Windows XP 开发语言:C# 项目名称:**管理系统 步骤: 1.打开开发环境VS2010, ...