Linux下C语言编程基础知识

上传人:平*** 文档编号:15579104 上传时间:2017-11-05 格式:DOC 页数:5 大小:33.25KB
返回 下载 相关 举报
Linux下C语言编程基础知识_第1页
第1页 / 共5页
Linux下C语言编程基础知识_第2页
第2页 / 共5页
Linux下C语言编程基础知识_第3页
第3页 / 共5页
Linux下C语言编程基础知识_第4页
第4页 / 共5页
Linux下C语言编程基础知识_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《Linux下C语言编程基础知识》由会员分享,可在线阅读,更多相关《Linux下C语言编程基础知识(5页珍藏版)》请在金锄头文库上搜索。

1、这篇文章介绍在 LINUX 下进行 C 语言编程所需要的基础知识。在这篇文章当中,我们将会学到以下内容:-源程序编译 -Makefile 的编写 -程序库的链接 -程序的调试 -头文件和系统求助 1.源程序的编译 在 Linux 下面,如果要编译一个 C 语言源程序,我们要使用 GNU 的 gcc 编译器。 下面我们以一个实例来说明如何使用 gcc 编译器。 假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,char *argv) printf(Hello Linuxn); 要编译这个程序,我们只要在命令行下执行: gcc -o hello hello

2、.c gcc 编译器就会为我们生成一个 hello 的可执行文件。执行./hello 就可以看到程序的输出结果了。命令行中 gcc 表示我们是用 gcc 来编译我们的源程序,-o 选项表示我们要求编译器给我们输出的可执行文件名为 hello 而 hello.c 是我们的源程序文件。 gcc 编译器有许多选项,一般来说我们只要知道其中的几个就够了。 -o 选项我们已经知道了,表示我们要求输出的可执行文件名。 -c 选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件。 -g 选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息。 知道了这三个选项,我们就可以编译我们自己所写

3、的简单的源程序了,如果你想要知道更多的选项,可以查看 gcc 的帮助文档,那里有着许多对其它选项的详细说明。2.Makefile 的编写 假设我们有下面这样的一个程序,源代码如下: #include mytool1.h #include mytool2.h int main(int argc,char *argv) mytool1_print(hello); mytool2_print(hello); #ifndef _MYTOOL_1_H #define _MYTOOL_1_H void mytool1_print(char *print_str); #endif #include myto

4、ol1.h void mytool1_print(char *print_str) printf(This is mytool1 print %sn,print_str); #ifndef _MYTOOL_2_H #define _MYTOOL_2_H void mytool2_print(char *print_str); #endif #include mytool2.h void mytool2_print(char *print_str) printf(This is mytool2 print %sn,print_str); 当然由于这个程序是很短的我们可以这样来编译 gcc -c

5、main.c gcc -c mytool1.c gcc -c mytool2.c gcc -o main main.o mytool1.o mytool2.o 这样的话我们也可以产生 main 程序,而且也不时很麻烦。但是如果我们考虑一下如果有一天我们修改了其中的一个文件(比如说 mytool1.c)那么我们 难道还要重新输入上面的命令?也许你会说,这个很容易解决啊,我写一个 SHELL 脚本,让她帮我去完成不就可以了。是的对于这个程序来说,是可以起到作用 的。但是当我们把事情想的更复杂一点,如果我们的程序有几百个源程序的时候,难道也要编译器重新一个一个的去编译? 为此,聪明的程序员们想出了一

6、个很好的工具来做这件事情,这就是 make。我们只要执行以下 make,就可以把上面的问题解决掉。在我们执行 make 之 前,我们要先编写一个非常重要的文件。-Makefile。对于上面的那个程序来说,可能的一个 Makefile 的文件是:# 这是上面那个程序的 Makefile 文件 main:main.o mytool1.o mytool2.o gcc -o main main.o mytool1.o mytool2.o main.o:main.c mytool1.h mytool2.h gcc -c main.c mytool1.o:mytool1.c mytool1.h gcc -

7、c mytool1.c mytool2.o:mytool2.c mytool2.h gcc -c mytool2.c 有了这个 Makefile 文件,不过我们什么时候修改了源程序当中的什么文件,我们只要执行 make 命令,我们的编译器都只会去编译和我们修改的文件有关的文件,其它的文件她连理都不想去理的。 下面我们学习 Makefile 是如何编写的。 在 Makefile 中也#开始的行都是注释行.Makefile 中最重要的是描述文件的依赖关系的说明。一般的格式是: target:components TAB rule 第一行表示的是依赖关系。第二行是规则。 比如说我们上面的那个 Mak

8、efile 文件的第二行 main:main.o mytool1.o mytool2.o 表示我们的目标(target)main 的依赖对象(components)是 main.o mytool1.o mytool2.o 当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令。就象我们的上面那个 Makefile 第三行所说的一样要执行 gcc -o main main.o mytool1.o mytool2.o 注意规则一行中的 TAB 表示那里是一个 TAB 键 Makefile 有三个非常有用的变量。分别是$,$,$/sin 命令,然后看/sin 文件,到那里面去找了。在 si

9、n 文件当中,我会找到这样的一行 libm-2.1.2.so:00009fa0 W sin 这样我就知道了 sin 在 libm-2.1.2.so 库里面,我用 -lm 选项就可以了(去掉前面的 lib 和后面的版本标志,就剩下 m 了所以是 -lm)。 如果你知道怎么找,请赶快告诉我,我回非常感激的。谢谢! 4.程序的调试 我们编写的程序不太可能一次性就会成功的,在我们的程序当中,会出现许许多多我们想不到的错误,这个时候我们就要对我们的程序进行调试了。 最常用的调试软件是 gdb.如果你想在图形界面下调试程序,那么你现在可以选择 xxgdb.记得要在编译的时候加入 -g 选项.关于 gdb

10、的使用可以看 gdb 的帮助文件。由于我没有用过这个软件,所以我也不能够说出如何使用。不过我不喜欢用 gdb.跟踪一个程序是很烦的 事情,我一般用在程序当中输出中间变量的值来调试程序的。当然你可以选择自己的办法,没有必要去学别人的。现在有了许多 IDE 环境,里面已经自己带了调试 器了。你可以选择几个试一试找出自己喜欢的一个用。 5.头文件和系统求助 有时候我们只知道一个函数的大概形式,不记得确切的表达式,或者是不记得着函数在那个头文件进行了说明。这个时候我们可以求助系统。 比如说我们想知道 fread 这个函数的确切形式,我们只要执行 man fread 系统就会输出着函数的详细解释的。和这个函数所在的头文件说明了。 如果我们要 write 这个函数的说明,当我们执行 man write 时,输出的结果却不是我们所需要的。 因为我们要的是 write 这个函数的说明,可是出来的却是 write 这个命令的说明。为了得到 write 的函数说明我们要用 man 2 write. 2 表示我们用的 write 这个函数是系统调用函数,还有一个我们常用的是 3 表示函数是 C 的库函数。 记住不管什么时候,man 都是我们的最好助手。 好了,这一章就讲这么多了,有了这些知识我们就可以进入激动人心的 Linux 下的 C 程序探险活动。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号