ARM工具与交叉工具链



针对ARM具体的比如A8,V7的交叉工具链,但是别人有制作好的,可以直接拿来用,同时在开发板里面也有这样的一个工具链


tool1.png


可以看到在开发板光盘里面有一个已经做好了的交叉编译工具链。


tool2.png


可以看到这就是它的文件夹结构,bin就是里面能用到最核心的程序,include就是一些头文件,lib是能够用到的一些内库,这些在后面作根文件系统的时候都能够用到。


tool3.png


1,addr2line把程序地址转换为文件名和行号。


2,ar建立,修改,提取归档文件。


3,as主要用来编译GNU C编译器gcc输出的汇编文件。


4,Id:GNU链接器。


5,nm:列出目标文件中的符号。


6,objcopy:文件格式转换。这个在编译的时候要生成二进制的印象文件就可以用这个来做。


7,objdump:显示一个或者更多目标文件的信息,主要用来反编译。


8,ranlib:产生归档文件索引,并将其保存到这个归档文件中。


9,readelf:显示elf格式可执行文件的信息,这个是非常有用的,可以用这个命令去读取一些文件信息包括还可以显示出它的一些头信息。


tool4.png


比如说输入命令,加上了“-h”这个参数就表示读取它的头文件信息,这个就是rm这个系统命令的头文件信息。


10,size:列出目标文件每一段的大小以及总体的大小。


11,strings:打印某个文件的可打印字符串。


12,strip:丢弃目标文件中的全部或者特定符号,减小文件体积。



ARM的交叉工具链


1,armcc:编译器


2,armasm:汇编器


3,armlink:链接器


4,armar:档案管理工具


5,fromelf:格式转换工具


6,C libraries


7,C++libraries


下面我们来搭建一下交叉工具链环境


tool5.png


比如说现在有个内核这个内核已经编译好了,我在编译它的时候,我就需要去搭建这样的环境,这个我必须要用到交叉编译最后才能够把它编译到ARM里面,然后才能编译ARM的内核。


tool6.png


所以先需要搭建好,首先输入命令IP,然后把光盘里面提供的拷贝进来,当然也可以去网址上下载。


tool7.png


然后找到它,输入命令看一下它的执行权限,然后输入命令解压。


tool8.png


解压完成之后,就会看到这里有个“opt”的文件夹,我们就可以一步一步的进去,别比如说输入命令,可以看到文件夹里面是一样的,下面我们就需要去设定环境变量,我们可以设定etc/environment下的环境变量,然后把它加到path里面就可以了,这样以后就可以直接用了,不过以后在编译的时候,原来是gcc,现在就有可能是ARM linux gcc,加上了前缀。


tool9.png


添加完之后,可以source一下etc/environment就生效了,当然也可以重新重启一下系统。


tool10.png


这样,我们以后就可以用这些命令了。


tool11.png


比如我们现在写了一个hello.c,然后我们就来编译一下。


tool12.png


中途可能会遇到一些权限问题,我们还是可以使用sudo去解决,首先把hello.c拷贝到用户空间里面去,然后进入到用户空间然后在进行编译。


tool13.png


输入命令,编译完成之后,用file看一下,我们可以看到这还是一个ELF的32位可执行文件,但是它针对的平台就是ARM系统了,所以这样我们就可以看出这不是运行在X86下面的而是运行在ARM下面的,否则运行是不会成功的。




【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

您有狂欢嘉年华礼包未领取

客服热线 400-862-8862

回到顶部