- 论坛徽章:
- 0
|
1.去找开发包
.arm-elf-gcc
.arm-elf-binutils
.arm-elf-uClibc
我找的都是rpm包,直接装上即可(中间花了很多时间来搞这个环境,最后才找到这三个包,
中间一度想自己编译uClibc),它们缺省是装在/opt/uClinux下面的。
2.源程序
max.c
-----
#include
extern int max2(int a,int b);
int main(){
int a=18;
int b=15;
printf("The maximum of %d and %d is %d\n",a,b,max2(a,b));
return 0;
}
max2.s
-------
.text
.align 2
.global max2
max2:
cmp r0,r1
bhi done
mov r0,r1
done: mov pc,lr
3.makefile (自己写的,不太美观)
LDDIR1 = /opt/uClinux/lib/gcc-lib/arm-elf/2.95.3
LDDIR2 = /opt/uClinux/arm-elf/lib
all: max.o max2.o
arm-elf-ld -L$(LDDIR2) -L$(LDDIR1) -e main -elf2flt -o max.elf \
/opt/uClinux/lib/gcc-lib/arm-elf/2.95.3/crtbegin.o \
/opt/uClinux/arm-elf/lib/crt0.o \
max.o max2.o \
/opt/uClinux/lib/gcc-lib/arm-elf/2.95.3/crtend.o \
-lc -lgcc -lc
max.o:
arm-elf-gcc -c max.c
max2.o:
arm-elf-as -o max2.o max2.s
.PHONY: clean
clean:
-rm -f max.elf max.o max2.o
4. 有个疑问: 就是 arm-elf-ld的库为什么要用两个 -lc? (不用第二个-lc会报 "..._uClibc_main_...abort..."这样的错误
5. 用skyeye运行不了,用arm-elf-gdb调试不了。
最后下载到板子上,能运行。看来是uClibc的原因,只能在板子上运行.
6. rpm的使用
rpm -qa | grep 包名字串 //查询是否安装这个包
rpm -ql 包名(包括版本号的) //查下这个包安装在哪里
rpm -e 包名 //删除已安装的包.
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26390/showart_1356061.html |
|