arm-elf-gcc交叉编译器的使用教程
arm-elf-gcc交叉编译器的使用教程
一开始需要安装arm-elf-gcc,但是这是一个32位的程序,我是安装了64位的系统,据说安装ia32.libs依赖库能运行这个,但是看到博客上面前人安装完了系统图标少了一半,然后就怕了。经过了翻看ubuntu论坛和各种博客,才知道14版之后的ubuntu64位官方已经抛弃了ia32.libs这个依赖库,在源列表中也是找不到的。但是官方自身已经支持32位,自带32位依赖库,在根目录下面就有一个lib32文件夹。
安装教程
博主使用的是arm-elf-tools-20040427.sh的编译器,比较老旧,但不影响使用。
- 打开终端
- 切换到arm-elf-tools-200427.sh所在路径
- 增加执行权限
sudo chmod 755 arm-elf-tools-20040427.sh
- 安装
sudo sh arm-elf-tools-20040427.sh
以上,安装完成
注:文件arm-elf-tools-20040427.sh的大小有17M,这个脚本就是安装文件。没事不要用普通的文本编辑器打开,高级点的文本编辑器可以。
使用教程
首先上一份简单的测试代码
int max( int* pt, int size )
{
int max_v = -32768;
int* tmp = &pt[size];
int* pi = pt;
while(pi<tmp){
if( *pi>max_v ){
max_v = *pi;
}
pi++;
}
return max_v;
}
arm-elf-gcc -S max.c
得到由c文件生成的汇编文件max.s
arm-elf-gcc -c max.s
由汇编文件编译得到Object文件max.o
arm-elf-readelf -a max.o > max_elfinfo
这个命令将给出全部的Object文件信息,保存在max_elfinfo这个文件中
查看一下max_elfinfo文件:ELF_header
查看一下max_elfinfo文件:Section_header
hexdump -C max.o > max_hex
直接打印出Object文件的全部字节,保存在max_hex文件中
以上面的.real.text为例子
Elf最后输出的内容
.rel.text告诉链接器指令中的哪些地方需要做重定位;
.symtab是符号表。Ndx列是每个符号所在的Section编号arm-elf-ld.real -o max2.out max.o
链接指定Object文件,max2.out为生成的文件,max.o为源文件
由于没有__gccmain函数入口,故有warning,此处先不管,绿色即为新生成文件用readelf命令分析新生成的max2.out
arm-elf-readelf -a max2.out > max2_elfinfo
调用不同c文件中的子函数
程序修改后如下:
编译两份c文件生成 .o 文件
arm-elf-ld.real -o main2.out main.o encrypt_char.o -lc
main2.out是链接生成的文件,main.o encrypt_char.o是参与链接的源文件,-lc 允许链接器搜索默认的路径,当你使用了系统自带的头文件或子函数时,需要添加该选项以便链接器能顺利链接到对应库
arm-elf-objdump -S main2.out > main2_1.s
反汇编链接后的.out文件,和链接前的.o文件反汇编结果进行比较
新生成的main2_1.s文件里面比原来的多了很多内容,最大的不同在于区分了各个文件的代码段
arm-elf-gcc交叉编译器的使用教程的更多相关文章
- Ubuntu 12.04 64bit GCC交叉编译器制作 原创
...
- ubuntu-14.10下,安装gcc交叉编译器遇到问题及解决方法
一 下载gcc-arm-none-eabi-4_9 安装成功后上报错误: ./gcc-arm-none-linux-gnueabi-gcc: No such file or directory 网上查 ...
- window 安装gcc交叉编译器
参考网址: https://blog.csdn.net/zsy19881226/article/details/46952535
- Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install gcc-arm-linux-gnueabi 前提是你的Ubuntu系统版本是官网支持的最新的版本, ...
- 【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
原文网址:http://www.cnblogs.com/muyun/p/3370996.html 一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install ...
- W5300E01-ARM 交叉编译器(Cross Compiler)用户手册
W5300E01-ARM是基于W5300的ARM功能测试评估板: 1 简介 当用户的开发环境与目标系统不同时就会用到交叉编译器. 例如,当开发基于ARM的嵌入式系统时,用户就需要在电脑上写出 ...
- 安装交叉编译器arm-linux-gcc
需要交叉编译环境故安装交叉编译环境 1.在宿主机的/usr/local/arm目录存放交叉编译器 mkdir /usr/local/arm 2.解压交叉编译器包至/usr/l ...
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf的区别
转自 https://www.cnblogs.com/linuxbo/p/4297680.html 命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eab ...
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch – 体系架构,如ARM,MIPSvendor – 工具链提供商os – 目标操作系统 ...
随机推荐
- 在VS2012中采用C++中调用DLL中的函数 (4)
这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天开始尝试调试DLL的文件调用,起初笔者在网络上找到了3片采用VSXXX版本进行调试的例子,相关的内容见本人 ...
- rem是如何实现自适应中的?
使用rem 然后根据媒体查询实现自适应.跟使用JS来自适应也是同个道理,不过是js更精确一点.使用媒体查询: html { font-size: 62.5% } @media only screen ...
- Windows phone 8 学习笔记(2) 数据文件操作(转)
Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方.本节主要讲解它们的用法以及相关限制性.另外包括本地数据库的使用方式 ...
- 打造一个自动检测页面是否存在XSS的小插件
前言: 还记得刚玩Web安全时,就想着要是能有一个自动挖掘XSS漏洞的软件就好了.然后我发现了Safe3.JSky.AWVS.Netsparker等等,但是误报太多,而且特别占内存.后来发现了fidd ...
- 重装linux后
root帐号解禁vi /etc/pam.d/gdmvi /etc/pam.d/gdm-passwd 两个装机必备软件源http://download1.rpmfusion.org/nonfree/fe ...
- JavaScript学习小结(一)——JavaScript入门基础
一.JavaScript语言特点 1.1.JavaScript是基于对象和事件驱动的(动态的) 它可以直接对用户或客户输入做出响应,无须经过Web服务程序.它对用户的响应,是采用以事件驱动的方式进行的 ...
- 将数组之中的省份市区地区ID改成对用中文字符
数据表数据源的省市区联动: 原始数据: //获取所有学校信息 $school=D('school'); $info=$school->getList(); 数据如下: 1 => array ...
- ThinkPHP之中的getField、Find、select、返回数据类型详解(ThinkPHP之中所有数据读取了)
小李子:用于演示作用的数据库表:customers 官方解读: “ 读取数据集其实就是获取数据表中的多行记录(以及关联数据),使用select方法 ” $customers=D('customers' ...
- 详解 CSS 属性 - :before && :after
现在我们经常在 html 源码中看到如下的写法: 这里的 ::after 和 ::before 就是我们今天来探讨的 css 伪元素之二 - :before && :after. 伪元 ...
- 十天学会单片机Day4串行口通信
并行与串行基本通信方式 1.并行通信方式 通常是将数据字节的各位用多条数据线同时进行传送. 并行通信控制简单.传输速度快:由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难. 2.串行通 ...