1 / 35

实验 6 Linux 应用程序开发

实验 6 Linux 应用程序开发. 1 实验目的. 通过实验了解 VI 编辑器的使用; 了解 Linux 下应用的开发过程. 2. 实验内容. Linux 开发流程介绍 编写 Hello World 程序 在开发板上运行开发程序 终端输出程序实验. 3 . 实验设备. 硬件: UP-TECHPXA270-S 嵌入式开发板、 PC 机 Pentumn500 以上 , 硬盘 10G 以上。 软件: PC 机操作系统 REDHAT LINUX 9.0 + MINICOM + ARM-LINUX 开发环境. 4. 实验原理.

carl
Download Presentation

实验 6 Linux 应用程序开发

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 实验6 Linux应用程序开发

  2. 1 实验目的 • 通过实验了解VI编辑器的使用; • 了解Linux下应用的开发过程

  3. 2.实验内容 • Linux开发流程介绍 • 编写Hello World程序 • 在开发板上运行开发程序 • 终端输出程序实验

  4. 3 .实验设备 • 硬件:UP-TECHPXA270-S嵌入式开发板、PC机Pentumn500以上, 硬盘10G以上。 • 软件:PC机操作系统REDHAT LINUX 9.0 +MINICOM + ARM-LINUX开发环境

  5. 4.实验原理 • 嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译调试环境建立在宿主机(即一台PC 机)上,对应的开发板叫做目标板。 • 运行Linux 的PC【宿主机】开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码,(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行。)然后把可执行文件下载到目标机上运行。

  6. 5.实验步骤 1.启动VMware和Linux操作系统,设置NFS服务,建立共享文件夹。 2. 在指定的共享文件夹下建立01_hello文件夹,使用VI编辑器编写实验源程序hello.c和make文件。 3.在本机环境下使用gcc编译源程序,生成可在宿主机上运行的目标程序hello1。 4.使用make命令交叉编译源程序,生成可在开发平台上运行的目标程序hello2。 5. 使用挂接命令Mount将共享文件夹挂接到开发板,运行Hello2。 6.重复2~5编写终端输出程序star.c和make文件,并分别在宿主机和开发板上运行验证程序。

  7. Linux开发工具 • GCC-GNU Compiler Collection,包含一系列针对不同语言和不同目标平台,以及可运行在不同主机系统上的编译器 • Make • GDB-负责程序调试 • Glibc-标准C库,数学库,以及板级程序库 • 集成开发环境

  8. GCC-程序编译 • GCC支持的前端 • GCC支持的语言包括C(gcc),C++(g++), Fortran(g77), Java(GCJ)和Ada(GNAT) • GCC支持的后端 • 后端的扩展机制使得GCC能够支持多种类型的体系结构,从RISC,CISC到DSP都有支持。 • GCC支持的主机系统 • 它可以运行在几乎所有操作系统的平台上(GNU/Linux)DOS Windows

  9. GCC程序编译 • hello.c #include <stdio.h>int main(void){printf ("Hello world, Linux programming!\n");return 0;}然后执行下面的命令编译和运行这段程序: # gcc hello.c -o hello# ./helloHello world, Linux programming!

  10. GCC选项 • -g:在可执行文件中输出调试信息,通常是为调试器gdb所用 • -On:代码优化,n随着系统的不同而不同 • -Idir:指定头文件搜索目录 • gcc foo.c –I/home/chen/include –o foo • -Ldir:指定在目录中需要搜索的库(动态库.so • 和静态库.a) • gcc foo.c –L/home/chen/lib –lfoo –o foo • -static:链接时使用静态链接 • -elf2flt:将可执行文件头转换为flt平板格式 • -c:只预处理,编译和汇编生产obj文件

  11. vi介绍 vi vi编辑器是一个用于创建和修改文本文件的交互式编辑器。使用vi编辑器时所有的文本编辑都放在一个缓冲区中,可以把所作的修改写到磁盘也可以放弃所做的修改。

  12. vi的模式 • Command Mode (命令模式) • 这是执行vi后的缺省模式 • 此时键盘输入当作命令 • 命令有大小写之区分 • Input Mode (插入模式) • 使用 a、i、o、c、r、s进入插入模式 • 用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上 • 按下 ESC 键即可回到 Command Mode

  13. vi的模式 • Last Mode (末行模式) • 在Command Line 按下 : 即可进入该模式 • 用来进行保存文件、打开文档或环境的设定 • 命令有大小写之分。

  14. vi的进入和内容输入 (命令模式) • 进入: vi 文件名 • 输入文件内容 (进入插入模式) • 新增 (append) a 从光标所在位置后面开始新增内容 A 从光标所在行最后面的地方开始新增内容。 • 插入 (insert) i 从光标所在位置前面开始插入内容 I 从光标所在行的第一个非空白字符前面开始插入资料。 • 开始 (open) o 在光标所在行下新增一行并进入输入模式。 O 在光标所在行上新增一行并进入输入模式。

  15. 命令模式 • 1、光标的移动 h 左移一个字符 l 右移一个字符j  下移一行 k 上移一行w,W  跳至后一个字的开头(W忽略标点)b,B 跳至前一个字的开头(B忽略标点)e   移动到后一个字的末尾 ^  至本行第一个非空字符 $  至行尾 0   至行首H  移动到当前窗口的第一列 M 移动到当前窗口的中间列 L  移动到视窗的最后一列) 光标所在位置到下个句子的第一个字母 ( 光标所在位置到该句子的第一个字母  } 光标所在位置到该段落的最后一个字母 {  光标所在位置到该段落的第一个字母

  16. 命令模式 1、光标的移动(续) nH 将光标移到屏幕的第 n 行 nL 将光标移到屏幕的倒数第 n 行 CTRL-d 向下半页 CTRL-f 向下一页 CTRL-u 向上半页 CTRL-b 向上一页 n- 减号移动到上一行的第一个非空白字符,前面加上数字可以指定移动到以 上 n 行 n+ 加号移动到下一行的第一个非空白字符,前面加上数字可以指定移动到以下 n 行

  17. 命令模式 2、删除 x  删除光标所在字符 X 删除光标前面的字符 s 删除光标所在字符,并进入输入模式 S  删除光标所在的行,并进入输入模式 dd 删除光标所在的行 D 从光标位置开始删除到行尾 d与光标移动命令的组合

  18. 命令模式 3、修改 r  修改光标所在字符,r 后接着要修改的字符。如,rc 可以用字符“c ”替换光标所指向的当前字符 R 进入替换状态,新增内容会覆盖原先内容,直到按 [ESC] 回到命令模式下为止 cc 修改光标所在行 C 修改从光标位置到该行末尾的内容 c 与光标移动命令的组合

  19. 命令模式 4、复制和移动 yy 复制当前行到内存缓冲区 nyy 复制 n 行内容到内存缓冲区 y与光标移动的组合 p 将缓冲区的内容粘贴到光标的后面 P 将缓冲区的内容粘贴到光标的前面 另:在末行模式下实现移动 :n1,n2 m n3 : 把 n1到n2 行内容搬到第 n3 行后

  20. 命令模式 5、搜索字符串 /pattern  移至下一个包含pattern的行 ?pattern 移至上一个包含pattern的行 /     往下重复查找 ?      往上重复查找 n      在同一方向重复查找 N     在相反方向重复查找 /pattern/+n 移至下一个pattern所在行后的第n行 ?pattern?-n 移至上一个Pattern所在行前的第n行 6、其他 u 撤销前一条命令的结果

  21. 末行模式 1、文件的保存和退出 :w 保存 :q 退出 :w! 强制保存 :q! 强制退出 :wq 保存退出 :wq! 强制保存退出

  22. 末行模式 2、字符串的替换 :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1 :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1 :.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1 :1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1 :g/str1/s//str2/g 功能同上

  23. 末行模式 其他: : n 将光标移到第 n 行 编辑多个文件 vi file1 file2 … :n 编辑下一个文件 :e filename 编辑指定文件

  24. gcc介绍 GCC由来: GCC由GNU创始人Richard Stallman首创,是GNU的标志产品。 GCC内容: GNU软件包括C编译器GCC,C++编译器G++,汇编器AS,链接器LD,二进制转换工具(OBJCOPY,OBJDUMP),调试工具(GDB,GDBSERVER,KGDB) 和基于不同硬件平台的开发库。在GNU GCC支持下用户可以使用流行的C/C++语言开发应用程序,满足生成高效率运行代码、易掌握的编程语言的用户需求 GCC应用: 运行于Linux操作系统下的自由软件GNU gcc编译器,不仅可以编译Linux操作系统下运行的应用程序,还可以编译Linux内核本身,甚至可以作交叉编译,编译运行于其它CPU上的程序。所以,在进行嵌入式系统应用程序开发时,这些工具得到了日益广泛的应用

  25. 编写HelloWorld应用程序 在Linex 环境下使用mkdir new 创建一个目录,cd new进入当前目录; 在Linux 环境下使用VIM编辑器,在当前目录下新建一个hello.c # vim hello.c 键入如下内容: #include <stdio.h> int main() { printf("hello,I,m learning Linux!\n"); return 0; }

  26. Gcc命令 • gcc hello.c –o hello1 • arm-linux-gcc hello.c –o hello2

  27. 编写HelloWorld的Makefile文件 在同一个目录下建立 makefile文件 # vim makefile 键入如下内容: CC =arm-linux-gcc EXEC=hello2 OBJS=hello.o $(EXEC):$(OBJS) $(CC) –ggdb3 -o $(EXEC) $(OBJS) Hello.o: hello.c $(CC) –c hello.c clean: rm -rf hello.o $(EXEC) 注意,在$(CC)和rm两行前面的空格是一个Tab键制表符,不能用空格代替

  28. 编译HelloWorld应用程序 在同一个目录下,敲入make命令 # make # ls 就可以看到名为hello2 的目标程序

  29. 下载HelloWorld应用程序 要将计算机上的网线(lan network)拔下来,插到实验箱的网口上. 首先要:成功启动实验箱的Linux操作系统之后 配置linux 的网络地址(不能和网络上的网络地址发生冲突和相同) ifconfig eth0 192.168.0.* 配置开发板的IP网络地址: ifconfig eth0 192.168.0.*(地址与主机的IP 在同一网段内)

  30. 下载HelloWorld应用程序 下载应用程序:在宿主机上启动nfs服务,并设置好共享目录, 在开发板终端上执行以下命令: mount –o nolock 192.168.0.123:/up-techpxa270 /mnt/nfs (123为宿主机的IP 地址,要根据实际情况修改) 挂接成功之后在开发板上,cd mnt/nfs ,再进入开发程序目录,执行./hello2命令,查看运行结果.

  31. 终端输出实验 编写应用程序star.c,在超级终端中输出如下格式显示: 0 *1 **2 ***3 ****4 *****5 ******6 *******7 ********8 *********9 注意:输出用printf语句

  32. 终端输出实验源程序 #include <stdio.h> int main() { int i,j; for (i=0;i<10;i++) { for(j=0;j<i;j++) { printf("*"); } printf("%d",i); printf("\n"); } return 0; }

  33. 终端输出实验makefile文件 实验程序的makefile文件代码: CC =arm-linux-gcc EXEC=star OBJS=star.o $(EXEC):$(OBJS) $(CC) –ggdb3 -o $(EXEC) $(OBJS) star.o: star.c $(CC) –c star.c clean: rm -rf star.o $(EXEC)

  34. 终端输出实验下载并执行 下载应用程序:在宿主机上启动nfs服务,并设置好共享目录,执行以下命令: mount –o nolock 192.168.0.121:/new /mnt/nfs(121为宿主机的IP 地址,要根据实际情况修改) 挂接成功之后在开发板上进入/mnt/nfs ,再进入开发程序目录,执行./star 命令,查看运行结果.

More Related