Ubuntu下ARM交叉编译环境

Ubuntu下ARM交叉编译环境

初次接触ARM开发版,才知道交叉编译这个名词,鉴于自己刚入门,肯定以后要经历数次才记得住,故在这做个记录,方便自己忘记时做个参考。

1.准备编译基础环境

因为ARM是32位,而Ubuntu是64位的,所以先安装一些32位的库。

sudo apt-get install lib32ncurses5 lib32z1 lib32stdc++6

2.安装ARM-Linux-gcc

因为我的是三星s3c2440的SOC,所以这里使用的友善之臂提供的交叉编译工具。
友善之臂官网 下载页面直接下载ARM-Linux GCC 4.4.3

# 下载交叉编译工具
wget http://112.124.9.243/arm9net/mini2440/linux/arm-linux-gcc-4.4.3-20100728.tar.gz
# 解压到当前目录
sudo tar zxvf arm-linux-gcc-4.4.3-20100728.tar.gz -C /
# 添加到环境变量
vi ~/.bashrc
#添加如下内容到末尾
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
#立即生效环境变量
source ~/.bashrc

3.查看安装状态

arm-linux-gcc -v
#可以看到如下内容:
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc
-4.4.3/configure --build=i386-build_redhat-linux-gnu --host=i386-build_redh
at-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/tool
schain/4.4.3 
省略...
Thread model: posix
gcc version 4.4.3 (ctng-1.6.1) 

在编译项目时,可能会遇到找不到除法函数等问题,这时需要将链接库加上。
链接库目录:/opt/FriendlyARM/toolschain/4.4.3/lib/gcc/arm-none-linux-gnueabi/4.4.3/

示例Makefile文件:

Makefile更多的使用说明请参考:Makefile 配置和使用

CC = arm-linux-gcc
LD = arm-linux-ld
AR = arm-linux-ar
OBJCOPY = arm-linux-objcopy
OBJDUMP = arm-linux-objdump
LIBPATH =-lgcc -L/opt/FriendlyARM/toolschain/4.4.3/lib/gcc/arm-none-linux-gnueabi/4.4.3/
#扫描所有文件,指定所需生成的.o文件
all_o_files:=$(patsubst %.c,%.o,$(wildcard **/*.c)) $(patsubst %.S,%.o,$(wildcard **/*.S))
all_o_files+=$(patsubst %.c,%.o,$(wildcard *.c)) $(patsubst %.S,%.o,$(wildcard *.S))
#test:
#echo $(all_o_files)
#依赖库查找方法:grep "__floatsisf" * -nR
all: $(all_o_files)
	${LD} $(LIBPATH) -T all.lds -o $@.elf $^ ${LIBPATH}
	${OBJCOPY} -O binary -S $@.elf $@.bin
	${OBJDUMP} -D $@.elf > $@.dis

%.o: %.c
	${CC} -march=armv4 -c -o $@ $<

%.o: %.S
	${CC} -march=armv4 -c -o $@ $<


clean:
	rm -rf */*.o */*.elf */*.bin */*.dis
	rm -f *.o *.elf *.bin *.dis

#伪目标
.PHONY:clean

#清理依赖
clean-dist:
	rm -f *.o.d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值