Linux下的C语言编程实验报告.docx
- 文档编号:3064939
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:13
- 大小:311.66KB
Linux下的C语言编程实验报告.docx
《Linux下的C语言编程实验报告.docx》由会员分享,可在线阅读,更多相关《Linux下的C语言编程实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
Linux下的C语言编程实验报告
第五章:
Linux下的C语言编程
姓名:
学号:
520913080429
专业:
信息安全09-04
实验内容:
1.c语言编程
2.vi编辑器
3.gcc编辑器
4.gdb编辑器
5.gdb中运行Linux的shell程序
6.make
7.env系统变量
1.c语言编程
一般模式
编辑模式
[root@localhosthome]#cd/home/
[root@localhosthome]#vihl.c
Youhavenewmailin/var/spool/mail/root
[root@localhosthome]#ls
hl.cstudentvmware-tools-distrib
[root@localhosthome]#
在调用C语言编译器的时候,可以通过给出“-I”编译命令标志来引用保存在下级子目录或者非标准位置的头文件,类似命令如下:
[david@localhostlinux]$gcc-I/usr/openwin/includehello.c
先进入/usr/include子目录,然后在grep命令里给出该名字的几个字母,如下所示:
[david@localhostlinux]$grepKEYSPAN*.h
pci_ids.h:
#definePCI_SUBVENDOR_ID_KEYSPAN0x11a9
pci_ids.h:
#definePCI_SUBDEVICE_ID_KEYSPAN_SX20x5334
2.vi编辑器
[root@localhost~]#cd/home
[root@localhosthome]#vicl.c
[root@localhosthome]#
3.gcc编辑器
gcc的版本可以使用如下gcc–v命令查看:
[david@DAVIDdavid]$gcc-v
Readingspecsfrom/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs
Configuredwith:
../configure--prefix=/usr--mandir=/usr/share/man
--infodir=/
sr/share/info--enable-shared--enable-threads=posix
--disable-checking--with-
ystem-zlib--enable-__cxa_atexit--host=i386-redhat-linux
Threadmodel:
posix
gccversion3.2.220030222(RedHatLinux3.2.2-5)
以上显示的就是Redhatlinux9.0里自带的gcc的版本3.2.2。
下面将以一个实例来说明如何使用gcc编译器。
例3-1能够帮助大家迅速理解gcc的工作原理,并将其立即运用到实际的项目开发中去。
实例3-1hello.c¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
#include
intmain(intargc,char**argv){
printf("HelloLinux\n");
}
[root@localhosthome]#ls
cl.cstudenttest.cvmware-tools-distrib
[root@localhosthome]#gcctest.c
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../crt1.o:
Infunction`_start':
(.text+0x18):
undefinedreferenceto`main'
collect2:
ld返回1
[root@localhosthome]#./a.out
bash:
/a.out:
没有那个文件或目录
[root@localhosthome]#gcctest.c-otest.i
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../crt1.o:
Infunction`_start':
(.text+0x18):
undefinedreferenceto`main'
collect2:
ld返回1
[root@localhosthome]#
Gcc的警告提示功能
gcc包含完整的出错检查和警告提示功能,它们可以帮助Linux程序员尽快找到错误代码,从而写出更加专业和优美的代码。
先来读读例3-2所示的程序,这段代码写得很糟糕,仔细检查一下不难挑出如下毛病:
main函数的返回值被声明为void,但实际上应该是int;
使用了GNU语法扩展,即使用longlong来声明64位整数,仍不符合ANSI/ISOC语言标准;
main函数在终止前没有调用return语句。
实例3-2bad.c¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
#include
voidmain(void)
{
longlongintvar=1;
printf("ItisnotstandardCcode!
\n");
}
4.gdb编辑器
test.c
#include
intfunc(intn)
{
intsum=0,i;
for(i=0;i { sum+=i; } returnsum; } main() { inti; longresult=0; for(i=1;i<=100;i++) { result+=i; } printf("result[1-100]=%d\n",result); printf("result[1-250]=%d\n",func(250)); } 5.shell程序 在gdb环境中,可以执行Linux的shell命令: shell 调用Linux的shell来执行 如果SHELL没有定义,那就使用Linux的标准shell: /bin/sh(在Windows中使用C或cmd.exe)。 还有一个gdb命令是make: make 可以在gdb中执行make命令来重新build自己的程序。 这个命令等价于shellmake 在gdb中运行程序 当以gdb 如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。 在gdb中,运行程序使用r或是run命令。 程序的运行,有可能需要设置下面四方面的事。 程序运行参数 setargs可指定运行时参数。 如: setargs1020304050 showargs命令可以查看设置好的运行参数。 运行环境 path
showpaths查看程序的运行路径。
setenvironmentvarname[=value]设置环境变量。
如:
setenvUSER=hchen
showenvironment[varname]查看环境变量。
工作目录
cd
pwd显示当前的所在目录。
程序的输入输出
infoterminal显示程序用到的终端的模式。
使用重定向控制程序输出。
如:
run>outfile
tty命令可以指写输入输出的终端设备。
如:
tty/dev/ttyb
shell命令解析器
定义别名
将lm定义为‘ls-al’
6.make
Make冒烟命令
make是一个解释makefile文件中的指令的命令工具
Makefile写法
只要makefile文件写得足够好,所有的这一切,只用一个make命令就可以完成,make命令会自动智能地根据当前文件的修改情况来确定哪些文件需要重新编译,从而自动编译所需要的文件并连接目标程序。
在讲述这个makefile文件之前,还是先来粗略地看一看下面的代码
Main.o:
main.cadd.h
Gcc–cmain.c–omain.o
在makefile文件中使用变量
在上面的例子中,先通过实例5-2来看看edit的规则。
实例5-2
edit:
main.okbd.ocommand.odisplay.o\
insert.osearch.ofiles.outils.o
gcc-oeditmain.okbd.ocommand.odisplay.o\
insert.osearch.ofiles.outils.o
可以看到,[.o]文件的字符串被重复了两次。
如果这个工程需要加入一个新的[.o]文件,需要在两个位置插入(实际是3个位置,还有一个位置在clean中)。
当然,这个makefile文件并不复杂,所以在两个位置加就可以了。
但如果makefile文件变得复杂,就要在第3个位置插入,该位置容易被忘掉,从而会导致编译失败。
所以,为了makefile文件的易维护,在makefile文件中可以使用变量。
makefile文件的变量也就是一个字符串,可以理解成C语言中的宏。
比如,声明一个变量objects,在makefile文件一开始可以这样定义
定义变量
[root@localhosthome]#name=zhangshan
[root@localhosthome]#name1='zhangsan'
[root@localhosthome]#name2="zhangsan"
[root@localhosthome]#echo$name
zhangshan
[root@localhosthome]#echo$name1
zhangsan
[root@localhosthome]#echo$name2
zhangsan
[root@localhosthome]#
7.env系统变量
管理模式1
显示passwd中的第一列|命令
[root@localhosthome]#cat/etc/passwd|cut-d":
"-f1
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
gopher
ftp
nobody
rpm
dbus
avahi
mailnull
smmsp
nscd
vcsa
haldaemon
rpc
rpcuser
nfsnobody
sshd
pcap
ntp
gdm
apache
distcache
postgres
mysql
dovecot
webalizer
squid
xfs
named
sabayon
postfi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 语言 编程 实验 报告