Chinaunix首页 | 论坛 | 博客
  • 博客访问: 67647
  • 博文数量: 13
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-14 13:33
文章存档

2011年(1)

2008年(12)

我的朋友

分类: LINUX

2008-10-31 21:08:23

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  包名             //删除已安装的包.
  



阅读(1980) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-01-03 13:05:49

想请教楼主一个问题,刚接触ARM-GCC,不知道如何下手 有如下一个最简单的程序: int main(void) { PINSEL1 = 0x00000000; IODIR1 = 0xFFFFFFFF; IOCLR1 = 0xFFFFFFFF; return 0; } 用ARM-ELF-GCC如何生成最张的HEX文件? 先编译这个文件?然后.... 现在不知道该怎么办了? 看到WINARM里面的例子都有一个.S文件和一个.LD文件 不知道这两个文件的具体作用以及我该怎么去写这个文件? (我的环境:WIN GNUARM LPC2148)