makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解
在linux中输入vi Makefile 来实现创建Makefile文件
注意:命令行前必须加TAB键
例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件
led.bin : crt0.S led.c
arm-linux-gcc -c -o crt0.o crt0.c
arm-linux-gcc -c -o led.o led.c
arm-linux-ld -Ttext 0x00000000 -g crt0.o led.o -o led_elf
arm-linux-objcopy -O binary -S led_elf led.bin
arm-linux-objdump -D -m arm led_elf > led.dis
clean:
rm -f led_elf led.dis led.bin *.o
led.bin : crt0.S led.c 指的是依赖关系,led.bin是目标文件,:后面是依赖文件
arm-linux-gcc 编译选项
- -o 编译及链接,会生成一个exe可执行文件
- -Wall 指定产生全部的警告信息
- -O/-O2/-O3 数字越高,代表优化的更多,可以使生成的执行文件的提高执行效率
- -c 编译不链接,会生成一个*.obj文件,若后面加了-o,则表示指定输出文件名称
- -static 静态链接,生成的文件会非常大, 好处在于不需要动态链接库,也可以运行
- -S 只激活预处理和编译,就是指把文件编译成为汇编代码
例如:
arm-linux-gcc -c -o led.o led.c :编译不链接
arm-linux-gcc -o led led.c :编译以及链接
arm-linux-ld 连接选项
- -Ttext 0x00000000 指代码段头地址为0x00000000
- -T链接脚本 指使用链接脚本来进行更复杂的地址设置,包括了代码段,数据段,bss段等
- -o 后面指的将多个文件连接在一起,生成一个obj文件,上面的名称是led_elf。
- -pie 生成动态链接地址段,一般在新版uboot里会看到
arm-linux-objcopy 复制选项,支持格式转换
- -O binary 用来指定生成文件按照后面的格式来输出,其中binary是指生成二进制(.bin)文件。
- -S 不从源文件中复制重定位信息和符号信息到目标文件中去
arm-linux-objdump 反编译选项
- -D 反编译所有段
- -b binary 指定反编译目标文件格式
- -m ram 指定反编译目标文件所需的架构,这里是ram架构
makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解的更多相关文章
- makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解【转】
转自:http://www.cnblogs.com/lifexy/p/7065175.html 在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 ...
- arm-linux-gcc/ld/objcopy/objdump参数总结【转】
arm-linux-gcc/ld/objcopy/objdump参数总结 转自:http://blog.csdn.net/muyuyuzhong/article/details/7755291 arm ...
- 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 ...
- Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)
1 前景回顾 1.1 Linux的调度器组成 2个调度器 可以用两种方法来激活调度 一种是直接的, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性的机制, 以固定的频率运行, 不时的检测 ...
- Linux驱动开发必看详解神秘内核(完全转载)
Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入L ...
- 【转】postgresql 9.4 在linux环境的安装步骤详解
本文章来为各位介绍一篇关于postgresql 9.4 在linux环境的安装步骤详解,希望文章能够对各位新手朋友带来帮助的哦. 环境说明系统:centos 6.4 64位软件:postgresql ...
- Linux上的free命令详解、swap机制
Linux上的free命令详解 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free ...
- linux PHP 编译安装参数详解
linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
随机推荐
- [补档][Tyvj 1518]CPU监控
[Tyvj 1518]CPU监控 题目 Bob需要一个程序来监视CPU使用率.这是一个很繁琐的过程,为了让问题更加简单,Bob会慢慢列出今天会在用计算机时做什么事. Bob会干很多事,除了跑暴力程序看 ...
- APMServ中的 Apache无法启动…
情况1. 找问题:C:\APMServ5.2.6\Apache\bin点击httpd.exe 会出现: path is invalid.(地址无效) 解决办法:找到C:/APMServ5.2.6/Ap ...
- 52. leetcode 96. Unique Binary Search Trees
96. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) tha ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第三节--abp分层体系及实体相关
说了这么久,还没有详细说到abp框架,abp其实基于DDD(领域驱动设计)原则的细看分层如下: 再看我们项目解决方案如下: JCmsErp.Application,应用层:进行展现层与领域层之间的协调 ...
- swift AVAudioPlayer播放音频时声音太小
设置下声音输出的扬声器就行了 代码如下 do { try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionP ...
- MacOS下安装gdb、mgo
安装gdb:http://blog.panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/ 注意最后两步: killall ...
- java虚拟机详解
注: 此篇文章可以算是读<深入理解Java虚拟机:JVM高级特性与最佳实践>一书后的笔记总结加上我个人的心得看法. 整体总结顺序沿用了书中顺序,但多处章节用自己的话或直白或扩展的进行了重新 ...
- 多人开发的git项目如何保持提交日志为一条直线?
多人开发的git项目如何保持提交日志为一条直线? 一.Git的项目的git常用操作 a)Git clone 项目地址 从远程仓库克隆项目到本地 b)Git pull 从当前分支拉取更新代码 c)Git ...
- leetcode——262. Trips and Users
The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are b ...
- iOS之UIWebView无法获取web标题
最近遇到了一个问题,就是在UIWebView的代理方法里,执行document.title的js代码无法获取网页标题,代码如下: - (void)webViewDidFinishLoad:(UIWeb ...