<尚大教育,教育至上,人才为大:sdedu.cc>
嵌入式C 语言的编程方法和编译方法
在上述交叉编译环境中,需进行如下的工作:
(1)建立工作目录
[root@zxt smile]# mkdir hello
[root@zxt smile]# cd hello
(2) 编写程序源代码
在Linux 下的文本编辑器有许多,常用的是vim 和Xwindow 界面下的gedit 等,我们在开发过程中推荐使用vim,用户需要学习vim 的操作方法,请参考相关书籍中的关于vim 的操作指南。Kdevelope、anjuta 软件的界面与vc6.0 类似,使用它们对于熟悉Windows 环境下开发的用户更容易上手。
实际的hello.c 源代码较简单,如下:
#include <stdio.h>
main ()
{
printf("hello world /n");
}
我们可以是用下面的命令来编写hello.c 的源代码,进入hello 目录使用vi 命令来编辑代码:
[root@zxt hellol# vi hello.c
按"i" 或者"a" 进入编辑模式,将上面的代码录入进去,完成后按Esc 键进入命令状态,再用命令"zwq"保存并退出。这样我们便在当前目录下建立了一个名为hello.c的文件。
(3)编写Makefi1e
要使上面的hello.c 程序能够运行,我们必须要编写一个Makefi1e 文件, Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个"make" 命令整个工程就可以实现自动编译,当然我们本次实验只有一个文件,它还不能体现出使用Makefile 的优越性,但当工程比较大文件比较多时,不使用Makefile几乎是不可能的。
下面我们介绍本次实验用到的Makefi1e 文件。
CC= armv41-unknown-linux-gcc
EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+= -static
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS)
clean:
-rm -f $(EXEC) * .elf * .gdb *.o
下面我们来简单介绍这个Makefile 文件的几个主要部分:
CC 指明编译器
EXEC 表示编译后生成的执行文件名称
OBJS 目标文件列表
CFLAGS 编译参数
LDFLAGS 连接参数
all: 编译主入口
clean: 清除编译结果
注意"$(CC) $(LDFLAGS) -o $@ $(OBJS)" 和"-rm-f$(EXEC) * .elf * .gdb *.o"前空白由一个Tab 制表符生成,不能单纯由空格来代替。
与上面编写hello.c 的过程类似,用vi 来创建一个Makefile 文件并将代码录入其中
[root@zxt hello ]# vi Makefile
(4) 编译自用程序
在上面的步骤完成后,我的就可以在hello 目录下运行"make"来编译我们的程序了。如果进行了修改,重新编译则运行:
[root@zxt hel1o]# make clean
[root@zxt hel1o]# make
注意:编译、修改程序都是在宿主机(本地PC 机)上进行,不能在MINICOM的终端方式下进行。
(5) 下载调试
在宿主PC 计算机上启动NFS 服务,并设置好共享的目录,在建立好NFS 共享目录以后,我们就可以进入MINICOM 中建立开发板与宿主PC 机之间的通信了。
[root@zxt hel1o]# minicom
[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56: /arm2410s /host
注意:IP 地址需要根据宿主PC 机的实际情况修改。
成功挂接宿主机的arm2410s 目录后,在开发板上进入/host 目录便相应进入宿主机的/arm241Os 目录,我们已经给出了编辑好的hel1o.c 和Makefile 文件,它们在/arm241Os/exp/basic/O1_ hello 目录下。用户可以直接在宿主PC 上编译生成可执行文件,并通过上面的命令挂载到开发板上,运行程序察看结果。
如果不想使用我们提供的源码的话,可以再建立一个NFS 共享文件夹。如/root/share ,我们把我们自己编译生成的可执行文件复制到该文件夹下,并通过MINICOM 挂载到开发板上。
[root@zxthello]# cp hello /root/share
[root@zxt hello]# minicom
[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56: /root/share /host
再进入/host 目录运行刚刚编译好的hello 程序,查看运行结果。
[/mnt/yaffs] cd /host
[/host] ./hello hello wor1d
注意:开发板挂接宿主计算机目录只需要挂接一次便可,只要开发板没有重启,就可以一直保持连接。这样可以反复修改、编译、调试,不需要下载到开发板。
<尚大教育,教育至上,人才为大:sdedu.cc>