编译blob上的问题,请各位大虾指点
我在44b0上移植blob,编译blob时遇到了问题。这里说说的我的做法(使用环境RedHat 9):1. 编辑文件 configure ,把所有arm-linux 改为arm-elf; 在580行处(“ac_ext=c”之前)插入 LDFLAGS=-elf2flt ,保存文件。
2.运行命令./configure --with-board=mba-44b0 --with-linux-prefix=/usr/local/src/uClinux-dist/linux-2.4.x (这是我的uclinux目录) --host=arm-elf
结果:LDFLAGS = -elf2flt -static -nostdlib
3.运行make
4.编译到arm-elf-objcopy -O binary -R .note .comment -S blob-start-elf32 blob-start出现错误(与你的一样):
arm-elf-objcopy:blob-start-elf32:File format not recognized
5.分析blob-start-elf32编译的命令
arm-elf-gcc -Os -I/usr/local/src/uClinux-dist/linux-2.4.x/include
-Wall -march=armv4 -mtune=strongarm1100
-fomit-frame-pointer -fno-builtin -mapcs-32 -nostdinc
-elf2flt -static -nostdlib -o blob-start-elf32
-Wl,-T,./start-ld-script start.o ledasm.o memsetup-s3c44b0.o -lgcc
使用了-elf2flt 选项,把blob-start-elf32编译成flat格式。
6.到目录 blob/src/blob目录下直接执行编译命令(把-elf2flt去掉)
arm-elf-gcc -Os -I/usr/local/src/uClinux-dist/linux-2.4.x/include
-Wall -march=armv4 -mtune=strongarm1100
-fomit-frame-ointer -fno-builtin -mapcs-32 -nostdinc
-static -nostdlib -o blob-start-elf32
-Wl,-T,./start-ld-script start.o ledasm.o memsetup-s3c44b0.o -lgcc
再执行一次
arm-elf-objcopy -O binary -R .note .comment -S blob-start-elf32 blob-start
结果顺利编译通过
显然 arm-elf-objcopy 中 blob-start-elf32 必须为elf格式
其后的blob-rest-elf32 ,blob-chain-elf32编译也应该是elf格式。
7.结论:所以编译源文件要使用 -elf2flt 才能编译通过,但编译连接 blob-start-elf32 又不能使用-elf2flt开关
8.直接修改blob/src/blob的Makefile ,但运行make 后,此Makefile又回复原样,实在没有办法,不知道如何修改。
9.本人一直在windows下编写程序,对makefile 的编辑不是很熟悉,虽然知道错误的原因, 但不知怎样修改makefile ,此事很急,请各位大侠赐教! 一般来说不用去修改makefile 和configure , 只需在configure 命令的前面指定CC 和CFLAGS , LDFLAGS就可以了,请看相关的那篇精华贴..... 8.直接修改blob/src/blob的Makefile ,但运行make 后,此Makefile又回复原样,实在没有办法,不知道如何修改。
这样直接修改是没有用的,每次运行configure脚本之后会重新生成Makefile覆盖掉你的修改。所以要么修改configure脚本,要么在运行了configure之后修改Makefile。 问题已经解决了!谢谢各位。
我到http://www.lomx.net/cn/lom_arm9_tooltrain.htm
下载了一个编译器,重新编译就OK。
页:
[1]