




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章:Linux下的C语言编程姓名:学号:520913080429专业:信息安全09-04实验内容:1.c语言编程2.vi编辑器3.gcc编辑器4.gdb编辑器5. gdb中运行Linux的shell程序6.make7.env系统变量1. c语言编程一般模式编辑模式rootlocalhost home# cd /home/rootlocalhost home# vi hl.cYou have new mail in /var/spool/mail/rootrootlocalhost home# lshl.c student vmware-tools-distribrootlocalhost home#在调用C语言编译器的时候,可以通过给出“ -I”编译命令标志来引用保存在下级子目录或者非标准位置的头文件,类似命令如下:davidlocalhost linux$ gcc -I /usr/openwin/include hello.c先进入/usr/include子目录,然后在grep命令里给出该名字的几个字母,如下所示:davidlocalhost linux$ grep KEYSPAN *.hpci_ids.h:#define PCI_SUBVENDOR_ID_KEYSPAN 0x11a9pci_ids.h:#define PCI_SUBDEVICE_ID_KEYSPAN_SX2 0x53342. vi编辑器编辑模式Esc:命令模式一般模式q!wq保存退出不保存退出rootlocalhost # cd /homerootlocalhost home# vi cl.crootlocalhost home# 3.gcc编辑器gcc的版本可以使用如下gcc v命令查看:davidDAVID david$ gcc -vReading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specsConfigured with: ./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-linuxThread model: posixgcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)以上显示的就是Redhat linux 9.0里自带的gcc的版本3.2.2。下面将以一个实例来说明如何使用gcc编译器。例3-1能够帮助大家迅速理解gcc的工作原理,并将其立即运用到实际的项目开发中去。实例3-1 hello.c#include int main (int argc,char *argv) printf(Hello Linuxn); rootlocalhost home# lscl.c student test.c vmware-tools-distribrootlocalhost home# gcc test.c/usr/lib/gcc/i386-redhat-linux/4.1.1/./././crt1.o: In function _start:(.text+0x18): undefined reference to maincollect2: ld 返回 1rootlocalhost home# . /a.outbash: /a.out: 没有那个文件或目录rootlocalhost home# gcc test.c -o test.i/usr/lib/gcc/i386-redhat-linux/4.1.1/./././crt1.o: In function _start:(.text+0x18): undefined reference to maincollect2: ld 返回 1rootlocalhost home#Gcc的警告提示功能 gcc包含完整的出错检查和警告提示功能,它们可以帮助Linux程序员尽快找到错误代码,从而写出更加专业和优美的代码。先来读读例3-2所示的程序,这段代码写得很糟糕,仔细检查一下不难挑出如下毛病:main函数的返回值被声明为void,但实际上应该是int; 使用了GNU语法扩展,即使用long long来声明64位整数,仍不符合ANSI/ISO C语言标准; main函数在终止前没有调用return语句。 实例3-2 bad.c#include void main(void) long long int var = 1; printf(It is not standard C code!n);4.gdb编辑器test.c#include int func(int n) int sum=0,i; for(i=0; in; i+) sum+=i; return sum; main() int i; long result = 0; for(i=1; i=100; i+) result += i; printf(result1-100 = %d n, result ); printf(result1-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自己的程序。这个命令等价于shell make 。 在gdb中运行程序当以gdb 方式启动gdb后,gdb会在PATH路径和当前目录中搜索的源文件。如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。在gdb中,运行程序使用r或是run命令。程序的运行,有可能需要设置下面四方面的事。程序运行参数set args 可指定运行时参数。如:set args 10 20 30 40 50show args 命令可以查看设置好的运行参数。运行环境path 可设定程序的运行路径。show paths 查看程序的运行路径。set environment varname =value 设置环境变量。如:set env USER=hchenshow environment varname 查看环境变量。工作目录cd 相当于shell的cd命令。pwd 显示当前的所在目录。程序的输入输出info terminal 显示程序用到的终端的模式。使用重定向控制程序输出。如:run outfiletty命令可以指写输入输出的终端设备。如:tty /dev/ttybshell命令解析器定义别名将lm定义为ls -al6.makeMake冒烟命令make是一个解释makefile文件中的指令的命令工具Make file 写法只要makefile文件写得足够好,所有的这一切,只用一个make命令就可以完成,make命令会自动智能地根据当前文件的修改情况来确定哪些文件需要重新编译,从而自动编译所需要的文件并连接目标程序。在讲述这个makefile文件之前,还是先来粗略地看一看下面的代码 Main.o :main.c add.h Gcc c main.c o main.o在makefile文件中使用变量在上面的例子中,先通过实例5-2来看看edit的规则。实例5-2edit : main.o kbd.o command.o display.o insert.o search.o files.o utils.o gcc -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o可以看到,.o文件的字符串被重复了两次。如果这个工程需要加入一个新的.o文件,需要在两个位置插入(实际是个位置,还有一个位置在clean中)。当然,这个makefile文件并不复杂,所以在两个位置加就可以了。但如果makefile文件变得复杂,就要在第3个位置插入,该位置容易被忘掉,从而会导致编译失败。所以,为了makefile文件的易维护,在makefile文件中可以使用变量。makefile文件的变量也就是一个字符串,可以理解成C语言中的宏。比如,声明一个变量objects,在makefile文件一开始可以这样定义定义变量rootlocalhost home# name=zhangshanrootlocalhost home# name1=zhang sanrootlocalhost home# name2=zhang sanrootlocalhost home# echo $namezhangshanrootlocalhost home# echo $name1zhang sanrootlocalhost home# echo $name2zhang sanrootlocalhost home#7.env系统变量管理模式1显示passwd中的第一列 | 命令rootlocalhost home# cat /etc/passwd |cut -d : -f1rootbindaemonadmlpsyncshutdownhaltmailnewsuucpoperatorgamesgopherftpnobodyrpmdbusavahimailnull
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧养老社区心理健康资源库创新创业项目商业计划书
- 购买建房土地合同(标准版)
- 果树苗木基地创新创业项目商业计划书
- 2025版长期租赁合同样本
- 奶牛节水养殖技术创新创业项目商业计划书
- 2025授权合同样本:软件许可使用合同
- 无公害蔬菜物流配送创新创业项目商业计划书
- 建屋合同(标准版)
- 南京安全员培训及答案
- 2025合同设备修理合同范本
- Unit 2 Home Sweet Home 重点短语和句式-人教版英语八年级上册
- 防治大气污染课件
- 国企综合管理岗招聘笔试题及答案13套
- 远离手机诱惑班会课件
- 国际音标教学课件
- 动漫制作培训课程
- 2025-2030中国征信行业发展状况与前景趋势研究报告
- 常用概率分布题目及答案
- 集装箱投资项目可行性研究报告(立项报告)
- 2025年互联网营销师考试题及答案
- 《煤矿安全规程》2024年修改内容-机电运输部分培训课件简约版
评论
0/150
提交评论