交叉编译基本流程

本文介绍了在Linux环境下配置ARM交叉编译环境的步骤,包括解压工具、修改环境变量及编译内核驱动的详细过程。在配置过程中可能遇到的两个问题分别是:未识别的编译选项错误和ld链接错误。解决方法分别是设置正确的ARCH变量和CROSS_COMPILE路径。总结中强调了配置ARCH和CROSS_COMPILE的重要性,并提供了问题的解决方案。
摘要由CSDN通过智能技术生成

一、配置环境变量

mkdir  /etc/local/arm/

tar -xvf arm-linux-4.3.2.tar.gz -C /etc/local/arm/

vim /etc/profile 

放到最后面

export PATH=/usr/local/arm/4.3.1/bin:$PATH

重启系统  reboot

二、编译内核及驱动模块

进到linux源码中,打开顶层Makefile

vim Makefike

配置

CROSS_COMPILE  ?= $(CONFIG_CROSS_COMPILE:"%"=%)

为:

CROSS_COMPILE   ?=/usr/local/arm/4.3.1/bin/arm-linux-

make ARCH=arm

三、遇到的问题
我们在交叉编译的时候可能会遇到下面两个问题,
1、
cc1: error: unrecognized command line option "-m64"
cc1: error: unrecognized command line option "-mno-red-zone"
cc1: error: unrecognized command line option "-mcmodel=kernel"
cc1: error: unrecognized command line option "-maccumulate-outgoing-args"
cc1: error: unrecognized command line option "-mno-sse"
cc1: error: unrecognized command line option "-mno-mmx"
cc1: error: unrecognized command line option "-mno-sse2"
cc1: error: unrecognized command line option "-mno-3dnow"

解决办法:
因为这是交叉编译,需要指定机器类型
export ARCH=arm
 
2、
ld: /home/aa/Desktop/learn/completion/completion/complete.o: Relocations in generic ELF (EM: 40)
ld: /home/aa/Desktop/learn/completion/completion/complete.o: Relocations in generic ELF (EM: 40)
ld: /home/aa/Desktop/learn/completion/completion/complete.o: Relocations in generic ELF (EM: 40)
ld: /home/aa/Desktop/learn/completion/completion/complete.o: Relocations in generic ELF (EM: 40)
ld: /home/aa/Desktop/learn/completion/completion/complete.o: Relocations in generic ELF (EM: 40)
ld: /home/aa/Desktop/learn/completion/completion/complete.o: Relocations in generic ELF (EM: 40)
/home/aa/Desktop/learn/completion/completion/complete.o: could not read symbols: File in wrong format
出现这个问题说明gcc是arm的了,但是ld还是pc的
我用
export PATH=/usr/local/arm-linux-gcc4.1.1/bin:$PATH
好像仍然不行,必须使用:
export CROSS_COMPILE=/usr/local/arm-linux-gcc4.1.1/bin/arm-linux-
总结:(必要的变量配置)
export ARCH=arm
export CROSS_COMPILE=arm-linux-
make ARCH=arm 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值