Linux下的C语言编程实验报告.docx

上传人:b****6 文档编号:3064939 上传时间:2022-11-17 格式:DOCX 页数:13 大小:311.66KB
下载 相关 举报
Linux下的C语言编程实验报告.docx_第1页
第1页 / 共13页
Linux下的C语言编程实验报告.docx_第2页
第2页 / 共13页
Linux下的C语言编程实验报告.docx_第3页
第3页 / 共13页
Linux下的C语言编程实验报告.docx_第4页
第4页 / 共13页
Linux下的C语言编程实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Linux下的C语言编程实验报告.docx

《Linux下的C语言编程实验报告.docx》由会员分享,可在线阅读,更多相关《Linux下的C语言编程实验报告.docx(13页珍藏版)》请在冰豆网上搜索。

Linux下的C语言编程实验报告.docx

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将会用来执行

如果SHELL没有定义,那就使用Linux的标准shell:

/bin/sh(在Windows中使用C或cmd.exe)。

还有一个gdb命令是make:

make

可以在gdb中执行make命令来重新build自己的程序。

这个命令等价于shellmake

在gdb中运行程序

当以gdb方式启动gdb后,gdb会在PATH路径和当前目录中搜索的源文件。

如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。

在gdb中,运行程序使用r或是run命令。

程序的运行,有可能需要设置下面四方面的事。

程序运行参数

setargs可指定运行时参数。

如:

setargs1020304050

showargs命令可以查看设置好的运行参数。

运行环境

path

可设定程序的运行路径。

showpaths查看程序的运行路径。

setenvironmentvarname[=value]设置环境变量。

如:

setenvUSER=hchen

showenvironment[varname]查看环境变量。

工作目录

cd

相当于shell的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

mail

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

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

当前位置:首页 > 法律文书 > 调解书

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

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