Linux下的C语言编程
- 格式:pdf
- 大小:182.51 KB
- 文档页数:3
第20卷第2期辽宁工学院学报V o l.20 N o.2 2000年4月JOU RNAL O F L I AON I N G I N ST ITU T E O F T ECHNOLO GY A p r.2000α文章编号:100521090(2000)022*******L inux下的C语言编程赵 颖1,韩秀梅2,马宏骞3(1.辽宁工学院计算中心,辽宁锦州 121001;2.辽宁工学院图书馆,辽宁锦州 121001;3.辽宁仪表学校,辽宁丹东 118002)摘 要:文中介绍了在L inux下编译、调试C程序的方法,讲述了L inux所包含的编程工具,目的在于利用L inux软件开发各种C程序及其它语言程序的方法。
关键词:L inux操作系统;C语言编程;C语言调试中图分类号:T P311.1 文献标识码:BC Language Programm i ng under L i nuxZHAO Y ing1,HAN X iu2m ei2,M A Hong2qian3 (puting Center of L iaoning Institute of T echnogy,J inzhou121001,Ch ina;2.L ibrary of L iaoning Institute ofT echno logy,J inzhou121001,Ch ina;3.L iaoning Institute of Instrum ent,D andong118002,Ch ina)Key words:L inux op erating system;C language p rogramm ing;C language debuggingAbstract:T he p rogramm ing and debugging m ethods of C language p rogram s under L inux are in troduced and the com p ile too ls in L inux package are expounded.It is u sefu l to develop C p rogram s o r o ther languages p rogram s w ith L inu s softw are. 随着开放源代码软件的流行,L inux这种原本用于网络环境的操作系统正越来越受到人们的欢迎,各种版本的L inux如雨后春笋般涌现出来,像我们耳熟能详的R edhat、T u rboL inux等。
L inux的发布中包含了很多软件开发工具。
对于程序员来说,这些免费的工具和编译器可以在L inux系统上开发C、C++、Fo rtrang77和面向对象的C程序。
C语言是一种在U n ix操作系统中被广泛使用的通用编程语言。
许多免费的L inux程序也都以C源代码的形式给出。
因此,如何在L inux 下使用C编译器和其他C编程工具是在L inux平台下管理和开始应用程序的基础。
1 GNU C编译器L inux上可用的C编译器是GNU C编译器。
在un ix下,C编译器传统上是一个称作CC的命令,它是C Com p iler的缩写。
而L inux上的C编译器是建立在自由软件基金会GNU的编程许可证的基础上,因此也称作GCC,并且可以自由发布,你能在L inux的发行光盘上找到它,像L inux的Slackw are 版中的GNU C编译器就是一个全功能的AN S I C 兼容编译器,(当然,它实际上是GNU GCC的修改版本)。
1.1 使用GCCC程序常常以很朴素的文本形式开始,这些文本文件是通过诸如V i或em acs之类的文本编辑器创建的,并且存储在以C作结束的文件中,一旦创建好C源文件后,便可以通过GCC进行编译。
通常后跟一些选项和文件名来使用GCC编译器,GCC 命令的基本用法如下:gcc[op ti on s][filenam es]命令行选项指定的操作将在命令行上每个给出的文件上执行。
当然,编译前,可以利用gcc-v来验证你是否已正确安装了gcc编译器。
GCC有超过100个的编译选项可以使用,这些α收稿日期:1999201206作者简介:赵 颖(19662),女,辽宁营口人,辽宁工学院讲师。
选项中的许多你可能永远也不会用到,但一些主要的选项将会频繁地用到。
很多的GCC选项包括一个以上的字符。
因此,你必须为每个选项指定各自的连字符,并且就像大多数L inux命令一样,你不能在一个单独的连字符后面跟一组选项。
例如:下面的两个命令是不同的: gcc-p-g test.c gcc-p g test.c第一条命令告诉GCC编译test.c时为p rof命令建立剖析(P rofile)信息并且把调试信息加入到可执行的文件里,而第二条命令只是告诉GCC为P rof命令建立剖析信息。
当不用任何选项编译一个程序时,GCC将会建立(假设编译成功)一个名为a.ou t的可执行文件。
例如,下面的命令将在当前目录下产生一个叫a. ou t的文件:gcc test.c使用-o编译选项可以为将产生的可执行文件指定一个文件名来代替a.ou t.例如:将test.c程序编译为名叫test的可执行文件,输入命令:gcc-o test test.c请注意:当使用-o选项时,-o后面必须跟一个文件名。
GCC同样具有指定编译器进行长方式的编译选项,-c选项告诉GCC仅把源代码编译为目标代码而跳过汇编和连接的步骤,这个选项使用非常频繁,因为它使得编译多个C程序时速度更快,并且更易于管理。
缺省时GCC建立的目标代码文件有一个.O的扩展名,此文件称为目标文件。
-S编译选项告诉GCC在为C代码产生了汇编文件后停止编译。
GCC产生的汇编语言文件的缺省扩展名是.S。
-E选项指示编译器反对输入文件进行预处理。
当这个选项被使用时,预处理的输出被送到标准输出而不是储存在文件里。
1.2 优化选项当用GCC编译C代码时,它会试着用最少的时间完成编译并且使编译后的代码易于调试。
易于调试就意味着编译后的代码与源代码有同样的执行次序,编译后的代码没有经过优化。
有很多选项可用于告诉GCC在耗费更多编译时间性和牺牲易调试性的基础上产生更小、更快的可执行文件。
-0选项告诉GCC对源代码进行基本优化,这些优化在大多数情况下都会使程序执行的更快。
-02选项告诉GCC产生尽可能小和尽可能快的代码。
-02选项将使编译的速度比使用-0时慢,但通常产生的代码执行速度会更快。
除了-0和-02优化选项外,还有一些低级选项用于产生更快的代码。
这些选项非常特殊,而且最好只有当你完全理解这些选项将会对编译后的代码产生什么样的效果时再去使用。
这些选项的详细描述请参考m an手册。
1.3 调试和剖析选项GCC支持多种调试和剖析选项。
在这些选项里你会最常用到的是-g和-pg选项。
-g选项告诉GCC产生能被GNU调试器使用的调试信息以便调试你的程序。
GCC提供了一个很多其他C编译器里没有的特性。
在GCC里能使-g 和-0(产生优化代码)联用,这一点非常有用,因为这样便可以在与最终产品尽可能相近的情况下调试代码。
-p g选项告诉GCC在程序里加入额外的代码。
执行时,产生gp rof用的剖析信息以显示程序的耗时情况。
2 Gdb调试器由于L inux在GNU程序开发世界中拥有很重要的地位,它提供了一个叫gdb的GNU调试程序。
Gdb是一个用来调节C和C++程序的强力调试器,它能在程序运行时观察程序的内部结构和内存的使用情况。
Gdb同时具备以下几种功能:(1)监视程序中变量的值。
(2)设置断点以使程序在指定的代码行上停止执行。
(3)支持单步调试。
在命令行上键入gdb并按回车键就可以运行gdb了。
为了使gdb正常工作,必须使被调试的程序在编译时包含调试信息,调试信息包含程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号。
Gdb利用这些信息使源代码和机器码相关联。
在编译时用-g选项打开调试选项。
下面列出一些基本的gdb命令:file:装入想要调试的可执行文件k ill:终止正在调试的程序list:列出产生执行文件的源代码的一部分nex t:执行一行源代码但不进入函数内部step:执行一行源代码而且进入函数内部run:执行当前被调试的程序qu it:终止gdbw atch:监视一个变量的值而不管它何时被改变b reak:在代码里设置断点,这将使程序执行到这里时被挂起(下转第48页)342000年(总第72期)赵 颖等:L inux下的C语言编程(defun C:DC()(comm and"layer""new""dc""c""6") (comm and"layer""set""dc"""))(defun C:xh()(comm and"layer""set""xh"""))(defun C:gs()(comm and"layer""set""gs"""))(defun C:gb()(comm and"layer""set""gb"""))(defun C:ts()(comm and"layer""set""ts"""))(defun C:cu()(comm and"layer""set""0"""))如果我们把以上举例的小程序(子程序)编辑成一个文件,取名为L XF.L SP.在A CAD的COMM AND状态下键入:(load"L XF")<回车> ;用LOAD函数装入内存,并对其表达式求值。
按照使用需要,起动D EFUN定义的函数名称,这样就为A u toCAD提供更多编辑、修改功能。
通过以上几个例子可以看出,用A u toL ISP语言自编程序,并不十分复杂(虽其有些功能A u toCAD命令也可以做到),但使用比较方便。
一般专业工程设计人员都能很快地掌握。
编制本专业的程序,使其更好地发挥CAD技术,将会极大地提高设计质量和速度。