说明:
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. 解决Installation failed with message Failed to finalize session : INSTALL_FAILED_INVALID_APK的问题

    Android Studio 运行AVD的时候出现: Installation failed with message Failed to finalize session : INSTALL_FAI ...

  2. 不可恢复的生成错误mergemod.dll 2.0.2600.0

    在进行Visual Studio 2008 进行Winform打包时,提示 不可恢复的生成错误,很是郁闷,1.在“开始 - 运行” 中输入以下内容分三次来重新注册下Mergemod.dll. regs ...

  3. 每日英语:Missing at Mobile World Congress: Innovation

    The hottest showcase for new technology at this year's Mobile World Congress wasn't in the event's c ...

  4. 【C/C++】C语言复习笔记-17种小算法-解决实际问题

    判断日期为一年中的第几天(考虑闰年) /* * 计算该日在本年中是第几天,注意闰年问题 * 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天 * 特殊情况,闰年且输入月份大于3时 ...

  5. 使用canvas制作简单表格

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. PowerShell实现基于SharePoint的网站HomePage Auto-Upgrade Solution

    *** Solution Auto-Upgrade Solution Tuesday, January 06, 2015 PS:该项目为公司项目,我还是给他的名字屏蔽掉吧,这是我用PowerShell ...

  7. uboot之第一阶段

    U-boot的启动一般分为两个阶段,现在我们先将第一阶段. 在此之前,我们先了解一下uboot的目录结构,各个文件夹是什么作用. 如果连各个文件夹是干什么的都不清楚就开始移植剪裁,势必会和我刚拿到开发 ...

  8. [datatable]排序时指定某列不可排序

    datatable是一个jquery扩展的表格插件.其提供了强大的表格功能. 官方地址:http://www.datatables.net/ 在官方示例中,对于表格的是否可排序是在初始化中设置的一个值 ...

  9. JAVA-JSP内置对象之request获得封装所有参数值的Map

    相关资料:<21天学通Java Web开发> 获得封装所有参数值的Map1.通过request对象的getParameterMap()方法来获得封装所有的参数值的Map对象.2.通过该Ma ...

  10. 4. Stacked AutoEncoder(堆栈自动编码器)

    1. AutoEncoder介绍 2. Applications of AutoEncoder in NLP 3. Recursive Autoencoder(递归自动编码器) 4. Stacked ...