说明:1.虚拟机中的linux版本可以不跟板子中linux的版本对应,因为编译程序时使用到的库文件都是交叉编译工具链安装包里自带的,与PC系统毫无关系
2.安装的交叉编译工具链的版本要与板子中的系统和板子使用CPU的型号对应,例如:ARM6410使用的是 ARM-LINUX-GCC-4.5.1-V6交叉编译器,ARM2440使用的是arm-linux-gcc-4.4.3交叉编译器,所以给6410编译的程序(虽然是hello word这种程序)在2440上都无法执行。
3.同一个PC虚拟机下的linux系统可以安装多个交叉编译工具链,只需稍微配置一下使用的是哪一个就好
下面是操作步骤:
一:安装、配置
1.找到安装包拖到虚拟机中的一个目录下
2.在终端中切换到安装包的路径,输入解压命令 tar xvzf arm-linux-gcc....tar -C /
-C /的意思是安装到/的路径下
3.配置使用哪一个交叉编译器
在终端中输入:gedit /root/.bashrc 弹出界面后在最下面加入一行
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin (就是安装的交叉编译器的命令的路径)
若是安装了多个交叉编译链可以用#把现在不适用的交叉编译器的路径屏蔽掉
eg:#export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
屏蔽4.4.3版本的使用4.5.1版本的
4.配置在以后的使用中省略命令路径
终端中找到路径/etc下的profile文件并打开
在if["SEUID"="0"];then
{
}
中添加一行pathmunge /opt/FriendlyARM/toolschain/4.5.1/bin
两行也可以 pathmunge /opt/FriendlyARM/toolschain/4.4.3/bin
但是需要把不使用的用#屏蔽掉
保存退出
在终端中输入source /etc/profile (使用此文件)
4.注销一下再重新登陆进去
在终端里输入arm-linux-gcc -v 查看编译器版本信息
二:使用
arm-linux-gcc hello.c -o hello 编译
arm-linux-objdump -D -S hello 反汇编(可以输出到文档中)
arm-linux-readelf -a hello (查看可执行文件的内容,及其头信息下的大小端、使用器件等有用信息)
arm-linux-readelf -d hello (查看文件的链接库)
若出现文件夹中有可执行程序,执行时却提示找不到文件,就要看看用到了那些链接库,再看看在/lib中有没有此链接库,没有的话从虚拟机中复制到板子里就OK了
arm-linux-gcc -v 查看编译器版本