《嵌入式系统》实验报告1
学号:          姓名:          班级:          成绩:       
实验名称:嵌入式Linux基础实验
实验地点
实验仪器:装有Linux操作系统的PC机一台;XSBase270实验开发平台一套
一、实验目的:
1、掌握Linux各类命令的使用方法;
2、熟悉Linux操作环境
3、了解Makefile的基本概念和基本结构
4、初步掌握编写简单Makefile的方法
5、了解递归Make的编译过程
6、初步掌握利用GNU Make编译应用程序的方法
二、实验内容:
一、练习使用Linux常用命令
文件和目录类命令:
(1) 启动计算机,利用root用户登录到系统,进入字符提示界面。
(2) 用pwd命令查看当前所在的目录;
$ pwd
(3) 用ls命令列出此目录下的文件和目录
$ ls
$ ls a
注:注意上面两个命令的区别(查看结果)
(4) 用man命令查看ls命令的使用手册
$ man  ls
(5) 在当前目录下,创建测试目录test
$ mkdir test
利用ls命令列出文件和目录,确认test目录创建成功
$ ls
(6) 进入test目录,查看当前目录的命令为
$ cd test
(7) 利用vi命令,在当前目录创建一个新的空文件newfile
$ vi   newfile
进入newfile后,输入“:wq”,保存后退出该文件。
(8) 利用cp命令复制系统文件/etc/profile到当前目录下
$ cp /etc/profile ./
复制文件profile到一个新文件profile.bak,作为备份
$ cp profile profile.back
用长格形式列出当前目录下的所有文件,注意比较每个文件的长度和创建时间的不同
$ ls -l
(9) 用less命令分屏查看文件profile的内容,注意练习less命令的各个子命令,例如b、p、q等并对then关键字查。
$ less profile
(10) 用grep命令在profile文件中对关键字then进行查询
$ grep  then  profile
(11) 回到上层目录;用tar命令把目录test打包为
$ cd  ..
$ tar  zcvf    test
(12) 将改名为,并把文件移动到test目录下;显示当前目录下的文件和目录列表,确认移动成功。
$ mv    test
$ ls  -l
(13) 进入test目录,显示目录中的文件列表;把文件解包
$ cd  test
$ tar  zxvf
(14) 显示当前目录下的文件和目录列表,复制test目录为testbak目录作为备份
$ ls a
$ cp  -r  test  testback
(15) 删除test子目录下的所有文件
$ rm rf  test
(16) 回到上层目录,利用rm命令删除目录test和其下所有文件
$ cd  ..
$ rm  rf  test
(17) 综合:根据各人学号or姓名,为自己新建一个工作目录,并利用pwd命令查看自己的工作目录,并记录如下:
工作目录是(请填写):
系统信息类命令:
(1) 利用date命令显示系统当前时间
$ date
(2) 利用free命令显示内存的使用情况
$ free
(3) 利用df命令显示系统的硬盘分区及使用状况
$ df
二、使用命令行的方式手动编译程序方法
0. 新建一个工程目录,并进入到该目录
[root@local]$ mkdir  first
注:这里“first”改为自定义命名,随之后面的也跟着修改
[root@local]$ cd  first
1.利用文本编辑器创建hello.c文件
  [root@local]$ vi  hello.c
  然后按一下“i”键,随后输入以下内容
#include <stdio.h>
int main(){
  printf(Welcome Emdoor!\n);
  return 1;
}
编辑完成后,按“Esc”键,退出输入模式;
接着输入“:wq”,表示保存以上文件后退出。
2.手动编译hello应用程序
[root@local]$ gcc  c  hello.c
[root@local]$ gcc hello.o o hello
运行hello程序:
[root@local]$ ./hello
3.删除hello.o和hello文件
[root@local]$ rm  -f  hello.o
[root@local]$ rm  linux查看当前路径命令f  hello
退出当前工程目录:
[root@local]$ cd  ..
三、利用GNU make自动编译应用程序的方法
0. 新建一个工程目录
[root@local]$ mkdir  mydir1
注:这里“mydir1”改为自定义命名,随之后面的也跟着修改
1.利用文本编辑器按照(二. 1.)的步骤分别创建一个makefile文件,并将其保存到与hello.c相同的目录下。
CC=gcc
CFLAGS=
all: hello
hello: hello.o
$(CC) $(CFLAGS) hello.o o hello
hello.o: hello.c
$(CC) $(CFLAGS) c hello.c o hello.o
clean:
rm rf hello*.o
2.执行指令:
[root@local]$ make
[root@local]$ ls
[root@local]$ ./hello
3.执行make clean命令
[root@local]$ make clean
4.修改hello.c文件,重复第2、3步操作,查看并记录所生成的文件和运行结果。
5.重新编辑makefile文件(按照(二. 1.)的步骤进行编辑;斜黑体表示修改部分)
CC=gcc
CFLAGS=
OBJS=hello.o
all: hello
hello: $(OBJS)
$(CC) $(CFLAGS) $^  -o  $@
hello.o: hello.c
$(CC) $(CFLAGS) c  $< -o  $@
clean:
rm rf hello*.o
(注意:makefile中的每一行要么顶格写,要么空tab个字符,要么空一个字符;不能空多个字符)
6.重复第2,3步操作,查看并记录运行结果
7.退出当前工程目录
[root@local]$ cd  ..
四、多个.c文件的编译
0. 新建一个工程目录
[root@local]$ mkdir  mydir22
注:这里“mydir22”改为自定义命名,随之后面的也跟着修改
1.按照(二. 1.)的步骤分别创建三个文件hello1.c、hello2.c、hello2.h和makefile
hello1.c
#include <stdio.h>
int main(){
  printf(Hello world!\n);
  test2();
  return 1;
}
hello2.c
  #include <stdio.h>
  #include hello2.h
  void test2(void){
    printf(Hello world again!);
}
hello2.h
void test2(void);
makefile
CC=gcc
CFLAGS=
OBJS=hello1.o hello2.o
all: hello
hello: $(OBJS)
$(CC) $(CFLAGS) $^ -o $@
hello1.o: hello1.c
$(CC) $(CFLAGS) c $< -o $@
hello2.o: hello2.c
$(CC) $(CFLAGS) c $< -o $@
clean:
rm rf hello*.o
2.先后执行如下命令
[root@local]$ make
[root@local]$ ls
[root@local]$ ./hello
3.修改makefile文件(斜黑体表示修改部分)
CC=gcc
CFLAGS=
CFILES=$(wildcard *.c)
OBJS =$(CFILES:%c=%.o)
all: hello
hello: $(OBJS)
$(CC) $(CFLAGS) $^-o $@
hello.o: hello.c
$(CC) $(CFLAGS) c $<-o $@
clean:
rm rf hello*.o
4.重复第2步操作,查看并记录运行结果
三、思考:
1、根据提供的Linux操作系统源码中的Makefile结构,分析在工程中多级目录中存在多个makefile时,编译的顺序如何?
在Makefile使用include关键字可以把别的Makefile包含进来,这很像C语言的#include,被包含的文件会原模原样的放在当前文件的包含位置。因此,编译次序就是按照最终的大文件的次序进行编译。
任课教师签名:                                                      201  年    月    日

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。