分类: LINUX
2012-04-19 16:10:36
/temp/ *(rw,sync,no_root_squash)
*代表所有的用户都可以,这里也可以改成开发板的ip地址192.168.1.230,这样仅开发板可以进入此共享目录 /temp/.
rw: read/write
no_root_squash:享有root权限,可以更改。
3 开发板nand flash 启动,进入串口终端命令模式。
mount -t nfs 192.168.1.108:/temp/ /mnt/ -o nolock
192.168.1.108 是宿主机redhat的ip地址
/temp/是共享目录
/mnt/是armlinux目标板的目录。
挂载成功后就可以在目标板的/mnt/的目录下看到redhat的/temp/目录下的内容了,当然也可以进行操作或是更改。
从这里可以看出,当所要编译的程序很庞大的时候,把宿主机的程序copy或是通过ftp传输都要花费很多的time(money!),so我们就用nfs共享目录的方法可以省去很大的麻烦,在目标板上运行即可,用的却是redhat的硬盘。融资挣钱!!!
4 在redhat的/temp/目录下编写hello吧
so easy!标准的C语言。
5 编写Makefile,让我有点困惑,望读者指正解释。
EXEC = hello
OBJS = hello.o
SRC = hello.c
CC = arm-linux-gcc
CFLAGS +=-O2 -Wall
LDFLAGS +=
all:$(EXEC)
$(EXEC):(OBJS)
$(CC)$(LDFLAGS) -o $@ $(OBJS)
%.o:%.c
$(CC)$(CFLAGS) -c $<-o $@
clean:
@rm -vf $(EXEC)*.o*~
OK,到此为止,编写完了Makefile,这里的编写对其基本语法还是不甚了解
6 make, 生产hello hello.o
7 在armlinux下,运行./hello 当然在mnt/目录下,会发现hello 可执行文件的颜色比其他靓丽,有点想被“上”感觉,于是我迫不及待的执行了./hello
-/bin/sh: ./hello not found
无法执行,在redhat下用的是arm-linxu-gcc编译器,执行后的代码肯定适合在arm platform下运行,那为什么还不行呢???
据网上资料说明,是lib的问题,没有所需要的lib,到底是哪个lib ,我还不会(知道了在补充)。
于是我用加 - static的方法。
$(CC)$(LDFLAGS) - static -o $@ $(OBJS).
再次运行后,发现print出了helloworld ,皆大欢喜。