淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx

上传人:b****8 文档编号:9777127 上传时间:2023-02-06 格式:DOCX 页数:17 大小:456.06KB
下载 相关 举报
淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx_第1页
第1页 / 共17页
淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx_第2页
第2页 / 共17页
淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx_第3页
第3页 / 共17页
淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx_第4页
第4页 / 共17页
淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx

《淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx》由会员分享,可在线阅读,更多相关《淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx(17页珍藏版)》请在冰豆网上搜索。

淮阴工学院嵌入式系统开发与应用实验报告实验三 基本开发工具的使用.docx

淮阴工学院嵌入式系统开发与应用实验报告实验三基本开发工具的使用

实验三基本开发工具的使用

一.实验目的

1.复习vi编辑器的使用

2.掌握gcc编译器的使用。

3.掌握gdb调试器的使用。

4.掌握make工具的使用。

二.实验内容

1.使用vi编辑器完成以下4个文件的内容输入:

[操作步骤]

(1)在/home目录下创建experiment3子目录,其命令:

cd/homemkdirexperiment3。

(2)在该目录下,创建以下四个文件,文件名:

hello.h、starfun.h、hello.c、star.c,其命令Cdexperiment3cat>hello.h>starfun,h>hello.c>star.c。

(3)使用vi编辑器分别输入以下内容:

A.starfun.h文件内容如下:

/*****starfun.h*****/

#ifndefSTARFUN_H

#defineSTARFUN_H

#defineNUM4

#defineNUMBER3

intstar1(){

inti,j,k;

for(k=1;k<=NUM;++k){

for(i=1;i<=(NUM-k);++i)

printf("");

for(j=1;j<=(2*k-1);++j)

printf("*");

printf("\n");

}

return0;

}

intstar2(){

inti,j,k;

for(k=NUMBER;k>=0;--k){

for(i=1;i<=(NUMBER-k+1);++i)

printf("");

for(j=1;j<=(2*k-1);++j)

printf("*");

printf("\n");

}

return0;

}

#endif

B.hello.h文件内容如下:

/*hello.h*/

#ifndefHELLO_H

#defineHELLO_H

voidhello(){

star1();

printf("hello,myfriends\n");

}

#endif

C.hello.c文件内容如下:

voidshowhello(){

hello();

}

D.star.c文件内容如下:

#include"starfun.h"

#include"hello.h"

#include

intmain(){

star1();

star2();

showhello();

return0;

}

2.使用gcc编译器,编译程序

[操作步骤]

(1)第一种方法:

分步进行

A.由star.cstarfun.h文件生成star.o目标文件:

gcc-cstar.c-ostar.o

B.由hello.chello.hstarfun.h生成hello.o目标文件

gcc-chello.c-ohello.o

C.由hello.ostar.o生成应用程序myprog

gccstar.ohello.o-omyprog

D.执行应用程序myprog

[root@localhost01_hello]#./myprog

执行情况截图:

 

(2)一条命令完成以上操作:

A.执行清屏命令:

clear

B.输入命令生成可执行程序myprog:

gccstar.chello.c-omyprog

C.执行程序myprog,其命令是:

./myprog:

D.执行情况截图:

3.常见选项的应用

(1)写出-Wll选项的作用:

允许发出gcc提供的所有有用的报警信息

(2)写出-w选项的作用:

关闭所有警告信息

(3)写出-v选项的作用并执行:

打印出编译器内部编译各过程的命令行信息和编译器的版本

(4)测试选项,列出结果:

[root@localhost01_hello]#gccstar.chello.c-omyprog

[root@localhost01_hello]#gcc-wstar.chello.c-omyprog

[root@localhost01_hello]#gcc-Wallstar.chello.c-omyprog

4.使用动态库

(1)[root@localhost01_hello]#gcc-c-fpichello.c

[root@localhost01_hello]#ls

(2)[root@localhost01_hello]#gcc-shared-s-olibhello.sohello.o

[root@localhost01_hello]#ls

(3)注意libhello.so库文件的命名格式,

(1)

(2)也可以用下边命令替代

gcc-fpic-shared-shello.c-olibhello.so

(4)[root@localhost01_hello]#cplibhello.so/usr/lib

注意/usr/lib为用户库自动搜索路径

(5)[root@localhost01_hello]#gcc-lhellostar.c-omystar

[root@localhost01_hello]#lddmystar

libhello.so=>/usr/lib/libhello.so(0x4002d000)

libc.so.6=>/lib/tls/libc.so.6(0x42000000)

/lib/ld-linux.so.2=>/lib/ld-linux.so.2(0x40000000)

[root@localhost01_hello]#./mystar

*

***

*****

*******

*****

***

*

*

***

*****

*******

hello,myfriends

5.使用静态库

[root@localhost01_hello]#rm*.o

rm:

是否删除一般文件‘hello.o’?

Y

[root@localhost01_hello]#rmmystar

rm:

是否删除一般文件‘mystar’?

Y

[root@localhost01_hello]#

[root@localhost01_hello]#rmlibhello.*

[root@localhost01_hello]#gcc-chello.c-ohello.o

[root@localhost01_hello]#ar-rclibhello.ahello.o

[root@localhost01_hello]#gccstar.clibhello.a-omystar

[root@localhost01_hello]#./mystar

*

***

*****

*******

*****

***

*

*

***

*****

*******

hello,myfriends

6.调试器的使用

(1)gdb

进入experiment3目录

执行

[root@localhost02_gdb]#gcc-gstar.chello.c-omyprog

[root@localhost02_gdb]#gdbmyprog

(2)gdb相关操作

A.查看文件,在gdb中键入“l”(list)就可以查看所载入的文件

B.设置断点,在gdb中设置断点非常简单,只需在“b”后加入对应的行号即可

C.查看断点情况,在设置完断点之后,用户可以键入“infob”来查看设置断点情况,在gdb中可以设置多个断点

D.运行代码,gdb默认从首行开始运行代码,可键入“r”(run)即可

E.查看变量值,在gdb中只需键入“p”+变量值即可

F.单步运行,单步运行可以使用命令“n”(next)或“s”(step)

G.恢复程序运行,可以使用命令“c”(continue)恢复程序的正常运行了.

7.利用GNUmake自动编译应用程序方法

1、利用文本编辑器创建hello.c文件

#include

intmain()

{

printf("WelcomeWANG\n");

return1;

}

2.利用文本编辑器创建一个makefile文件,并将其保存到与hello.c相同的目录下。

CC=gcc

CFLAGS=

all:

hello

hello:

hello.o

$(CC)$(CFLAGS)hello.o–ohello

hello.o:

hello.c

$(CC)$(CFLAGS)–chello.c–ohello.o

clean:

rm–rfhello*.o

2、先后执行如下命令

[root@local]$make

[root@local]$ls

[root@local]$./hello

3、执行makeclean命令:

[root@local]$makeclean

4、修改hello.c文件,重复第2、3步操作,查看并记录所生成的文件和运行结果,并与手动编译进行比较,写出你的结论。

Makefile可以在修改源文件后不用再次输入gcc调试命令,再次执行很方便。

5、重新编辑makefile文件(斜黑体表示修改部分)

CC=gcc

CFLAGS=

OBJS=hello.o

all:

hello

hello:

$(OBJS)

$(CC)$(CFLAGS)$^-o$@

hello.o:

hello.c

$(CC)$(CFLAGS)–c$<-o$@

clean:

rm–rfhello*.o

6、重复第2,3步操作,查看并记录所生成的文件和运行的结果。

比较这两种操作,写出你的结论。

同时指出$^、$@、$<在上述Makefile中的含义。

7、多个.c文件的编译

1)创建文件hello1.c、hello2.c、hello.h和makefile

//hello1.c

#include

intmain()

{

printf("WelcomeEmdoor!

\n");

test2();

return1;

}

//hello2.c

#include"hello2.h"

#include

voidtest2(void)

{

printf("WelcomeEmdoor!

–hello2\n");

}

//hello2.h

voidtest2(void);

#makefiletestformultifilesprogram

CC=gcc

CFLAGS=

OBJS=hello1.ohello2.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–rfhello*.o

2)先后执行如下命令

[root@local]$make

[root@local]$ls

[root@local]$./hello

三.实验结论

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1