建立网站的文案怎么写,网站系统平台的安全策略是什么,淘宝客网站怎么备案,民企厂房建设招标网站1.交叉编译器 \qquadARM裸机、Uboot移植、linux移植这些都需要在linux系统上进行编译#xff0c;编译就需要编译器。在linux系统中#xff0c;可以使用gcc命令对c语言程序进行编译#xff0c;但gcc编译器是针对X86架构的#xff0c;现在需要对ARM架构的代码进行编译。所以我…1.交叉编译器
\qquadARM裸机、Uboot移植、linux移植这些都需要在linux系统上进行编译编译就需要编译器。在linux系统中可以使用gcc命令对c语言程序进行编译但gcc编译器是针对X86架构的现在需要对ARM架构的代码进行编译。所以我们现在需要一个可以对ARM架构的代码进行编译的gcc编译器这个编译器被称为交叉编译器。 \qquad交叉编译器具有如下的特点 \qquad(1)是一个gcc编译器 \qquad(2)运行在X86架构上 \qquad(3)可以编译ARM架构的代码也就是说编译出来的可执行文件是在ARM芯片上运行的
2.ARM-linux交叉编译器的下载安装
\qquad我下载的是gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz下载地址arm-linux交叉编译器4.9.4 \qquad下载完成后在/usr/local目录下创建一个arm目录然后再把gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz拷贝到/usr/loacl/arm目录下再解压。
sudo mkdir arm #创建arm目录sudo cp /home/xiaoming/downloads/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm #复制sudo tar xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz\qquad解压完成之后还需要把/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin的路径添加到/etc/profile
sudo vim /etc/profile #打开profile\qquad在文件最后添加export PATH$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin \qquad查看是否安装成功若安装成功会显示版本号gcc version 4.9.4 (Linaro GCC 4.9-2017.01)
arm-linux-gnueabihf-gcc -v3.交叉编译器的编译过程
\qquad首先使用arm-linux-gnueabihf-gcc将.c .s文件编译为.o文件.s文件是汇编文件.c文件是c语言文件。 \qquad-g产生调试信息-c编译源文件但是不链接-o制定编译产生的.o文件的名字。
arm-linux-gnueabihf-gcc -g -c .c文件(或者.o文件) -o .o文件\qquad然后把上一步的所有的.o文件链接到一起并要指定一个链接起始地址也就是代码运行的起始地址。链接起始地址一般指向RAM地址RAM 分为内部RAM和外部RAM外部RAM即DDR。比如
arm-linux-gnueabihf-ld -Ttext 0X87800000 xxx.o -o xxx.elf\qquad最后xxx.elf不是最终烧写到单片机sd卡上的可执行文件我们要烧写的文件是.bin文件这需要使用arm-linux-gnueabihf-objcopy -O binary -S -g xxx.elf xxx.bin \qquad其中-O选择以什么格式输出binary以二进制输出-S不要复制源文件中的重定位和符号信息-g不要复制源文件中的调试信息
arm-linux-gnueabihf-objcopy -O binary -S -g xxx.elf xxx.bin