+ -
当前位置:首页 → 问答吧 → 不知道怎么向下学了

不知道怎么向下学了

时间:2006-03-19

来源:互联网

各位前辈,这是我在网上下的一个入门实例,我想知道我在linux下写的程序,通过这个arm-elf-gcc编译后得拿到skyeye模拟的linux上执行,就是这个linux问题:‘skyeye linux’这个命令启动是什么Linux?和我在uClinux-disk目录下启动的(用命令:skyeye linux-2.4.x/linux)uClinux有什么联系吗?希望哪位前辈帮忙回复一下学习遇到瓶颈了,着急啊。

-----------------------------------------
5、测试你的arm-elf-gcc编译器

先写一个小程序hello.c
PHP 代码:
#include <stdio.h>

int main(void)
{
  int i;

  for(i = 0; i < 6; i++){

    printf("i = %d ",i);

    printf("Hello, embedded linux!\n");
  }

  return 0;
}
然后执行:

arm-elf-gcc -Wl,-elf2flt -o hello hello.c

-elf2flt参数是将elf文件格式转为flat文件格式,这个工具是在你安装交叉编译器产生的。

或者你可以写个Makefile文件,执行:

make

这里是我的Makefile文件,仅供参考:
PHP 代码:
# begin

CC = arm-elf-gcc

CFLAGS = -D__PIC__ -fpic -msingle-pic-base -O2 -pipe -Wall -g
LDFLAGS = -Wl,-elf2flt

LIBS =
OBJS = hello.o

all:   hello

hello: $(OBJS)
    $(CC) $(CFLAGS) $(LDFLAGS) -o hello $(OBJS) $(LIBS)

clean:
    rm -rf *.o *.elf *.gdb hello

# end
如果编译通过,就会产生hello可执行文件。用下面的命令:

file hello

你会发现,它是BFLT(binary FLAT),你目标平台所支持的文件格式。


6、执行你的hello程序

这里,我们将借助genromfs这个小工具来完成测试,这个工具就是你在安装交叉编译器时产生的,你可以直接使用它。

到http://gro.clinux.org/projects/s ... s-1.0.4.tar.bz2包:

tar jxvf skyeye-binary-testutils-1.0.4.tar.bz2

cd testsuits/at91/uclinux2(当然你还可以用别的)

mkdir romfs(建一个目录,后面用)

mount -o loop boot.rom /mnt/xxx

cp -r /mnt/xxx/* romfs

另外,把你编译好的可执行程序拷贝到/romfs/bin目录里,这里就是hello了!

genromfs -f boot.rom -d romfs/

注:可以用genromfs -h来获得帮助!

OK!执行下面的命令:

skyeye linux

(skyeye)target sim

(skyeye)load

(skyeye)run

kernel start.....

很熟悉了吧。。。

cd /bin

hello

可以看到结果了吗?

其实到了这一步,你就可以开发自己的程序了!
文字文字      

作者: TurboDisk   发布时间: 2006-03-19

热门下载

更多