Chinaunix首页 | 论坛 | 博客
  • 博客访问: 295833
  • 博文数量: 52
  • 博客积分: 814
  • 博客等级: 军士长
  • 技术积分: 689
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-21 19:41
文章分类
文章存档

2017年(1)

2016年(2)

2014年(1)

2012年(42)

2011年(6)

分类: LINUX

2012-04-19 16:10:36

编写linux的应用程序。用的是vi编辑器。
虽然是一个小小的hellorworld实验,但是麻雀虽小五脏俱全嘛!实验的目的是在redhat下编写linux应用程序,然后编译成执行文件,然后在armlinux(开发板)上运行。
这里需要的是在开发板nand falsh启动后,用NFS服务器连接redhat server。把需要执行的文件所在的目录直接挂载到armlinux某一目录下,本人挂载在/mnt/目录下。
1 service nfs restart 将nfs开启。(关于NFS服务器的设置其他文章见)
2 此时设置共享目录,可以选择根目录下的temp(mkdir temp)下。
  •    这里可以打开NFS server 在图形界面下设置即可。
  •    也可以通过命令打开nfs server 编辑: gedit(vi)/etc/exports

/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 ,皆大欢喜。

 

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