linux软件编程实验,实验一__Linux下C编程.doc

实验一__Linux下C编程.doc

实验一 Linux下C编程

实验目的:

熟练使用vi中的常见操作,并且熟悉vi的3种模式;

熟练掌握gcc编译命令及gdb的调试命令;通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力;

通过对包含文件的makefile的编写,熟悉各种形式的makefile;

通过使用autotools生成包含多文件的makefile。

实验内容

熟练使用vi

在“/root”目录下建一个名为“vi”的目录;

进入“vi”目录;

将文件“/etc/inittab”复制到“vi”目录下;

使用vi打开“vi”目录下inittab;

设定行号,指出设定initdefault的所在行号;

将光标移到该行;

复制该行内容;

将光标移到最后一行行首;

粘贴复制行的内容;

撤销第9步操作;

将光标移到最后一行行尾;

粘贴复制行的内容;

光标移到“si::sysinit:/etc/rc.d/rc.sysinit”;

删除该行;

存盘但不退出;

将光标移到行首;

插入模式下输入“Hello,this is vi world!”;

返回命令行模式;

向下查找字符串“0:wait”;

向上查找字符串“halt”;

强制退出vi,不存盘。

实验步骤见书本P87

用gdb调试程序中的bug

使用vi编辑器将一下代码输入到名为greet.c的文件中。此代码的原意为输出倒序main函数中定义的字符串,但结果显示没有输出。代码如下所示:

使用gcc编译这段代码,注意加上“-g”选项以方便之后的调试;

运行生成的可执行文件,观察运行结果;

使用gdb调试程序,通过设置断点,单步跟踪,一步步找出错误所在;

纠正错误,更改源程序并得到正确结果;

实验步骤见书本P88

编写包含多文件的makefile

用vi在同一目录下编辑两个简单的hello程序,如下所示: #hello.c #include “hello.c” int main() { printf(“Hello everyone!\n”); } #hello.h #include

仍在同一目录下用vi编辑makefile文件,且不使用变量替换,用一个目标体实现,然后用make验证所编写的makefile是否正确;

仍将上述makefile使用变量替换实现,同样用make验证所编写的makefile是否正确;

编辑另一个makefile,取名为makefile1,不使用变量替换,但用两个目标体实现(首先将hello.c和hello.h编译为hello.o,再将hello.o编译为hello),再用make的“-f”选项验证这个makefile的正确性;

将上述makefile1使用变量替换实现

实验步骤见书本P90

使用autotools生成包含多文件的makefile

在原目录下新建文件夹auto

将上例中的两个代码文件“hello.c”和“hello.h”复制到该目录下

使用autoscan生成configure.scan

编辑configure.scan,修改相关内容,并将其重命名为configure.in

使用aclocal生成aclocal.m4

使用autoconf生成configure

使用autoheader生成config.h.in

编辑makefile.am

使用automake生成makefile.in

使用configure生成makefile

使用make生成hello可执行文件,并在当前目录下运行hello查看结果

使用make install将hello安装到系统目录下,并运行,查看结果

使用make dist生成hello压缩包

解压hello压缩包

进入解压目录

在该目录下安装hello软件

实验步骤见书本P91

实验结果截图

1. 实验一截图

Linux下的简单的运用:

图一

对inittab文件做完处理后的文件结果:

图二

图三

实验二截图

第一遍运行greet.c的结果:

图四

用gdb调试的过程:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值