在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → 《 Linux操作系统下C语言编程入门》

《 Linux操作系统下C语言编程入门》

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.83M
  • 下载次数:18
  • 浏览次数:132
  • 发布时间:2020-08-12
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
《Linux操作系统下C语言编程入门》介绍在LINUX下进行C语言编程所需要的基础知识
Linux操作系统C语言编程入门 目录 第一章基础知识 第二章进程介绍 0 第三章文件操作 第四章时间概念 27 第五章信号处理 31 第六章消息管理 39 第七章线程操作 49 第八章树络编程 第九章 Linux下C开发工具介绍 87 [3104] Linux操作系统C语言编程入门 第一章基础知识 前言 本 章介绍在 LINUX下进行C语言编程所需要的基础知识在这篇文章当中我们将会 学到以下内容 源程序编译 Makefile的编写 程序库的链接 程序的调试 ■头文件和系统求助 of104 Linux操作系统C语言编程入门 1源程序的编译 在 nux下血,如果要编译一个C语言源程序我们要使用GNU的gcc编译器。下面 我们以一个实例来说明如何使用gcc编译器。假设我们有下面一个非常简单的源程序 Chello.c): int main(int argc, char *Fargy) printf("Hello Linux\n") 要编译这个程序我们只要在命令行下执行: gcc - o hello hello.c gcc编译器就会为我们生成一个hel的可执行文件执行./helo就可以看到程序的输出 结果了命令行中gc表小我们是用gcc来编译我们的源程序,o选项表小我们要求编详尜 给我们输出的可执行文作名为heh而hlc是我们的源程序文件 gc器有许多选顷,般来说我们只要知道其中的几个就够了。0选项我们已经知道 了,表示我们要求输出的可执行文件名。~c选项表示我们只要求编译器输出目标代码而不必 要输岀可执行文件。⑧选项表示我们要求编译器在编译的时候提供我们以后对程序进行调 试的信息 知道了这一个选项我们就可以编泽我们自己所写的简单的源程序了如果你想要知道更 多的选项,可以査看gcc的帮助文档,那里有着许多对其它选项的详细说明。 2 Makefile的编写 假 设我们有下面这样的一个程序源代码如下: maIn.c fincludemytool1 h fincludemytool2 h" int main (int argc, char *-kargy mytooll_print("hello") OT /*mtool.h*/ ifndef mytool 1 h #define Mytool 1 H void mytooll_print(char *print_ str); #endif mtool. C 104 Linux操作系统C语言编程入门 #include"mytooll h void mytooll_print(char print_str printf( This is mytooll print %s\n,print_str) /*mytool2 h*/ #ifndef mytool 2 h #define MYTOoL 2 H void mytool2_print(char print__str) / mytool2.c/ ffincludcmytool2 h" void my tool2_print(char *print_sir) printf("This is mytool2 print/os\n"print_str) 当然由于这个程序是很短的我们可以这样来编译 oCC -C main. c gcc-c mtool C gcc-c mytool2 c gec-o main main.o mytool1o mytoo120 这样的话我们也可以产生main程序,而且也不时很麻烦但是如果我们考虑一下如果有 天我们修改了其中的个文件(比如说 mtool.)那么我们难道还要重新输入上面的命令? 也许你会说这个很容易解决啊,我写一个 SHELL脚本,让她帮我去完成不就可以了是的对 于这个程序米说,是可以起到作用的,但是当我们把事情想的更复杂一点,如果我们的程序有 几百个源程序的时候难道也要编译器重新一个一个的去编译? 为此,聪明的稈序员们想岀了一个很好的工具来做这件事情,这就是make.我们只要执行 以下make,就可以把上面的问题解决掉.在我们执行make之前我们要先编写个非常重要的 文件. Makefile对于上面的那个程序来说可能的一个 Makefile的文件是: #这是上面那个程序的 Makefile文件 main: main. o mytool1 o mytoo12o gcc-o main main. o mytoollo mytool2 main.o: main.c mytoollh mytool2 h gcc-c main c mvtool1. 0: mvtool1 c mtool. h gcc-C mtool C mytool2. 0: mytool2 c mytoo12h gCC.-C mytool2 c 有了这个Ⅵ makefile文件不过我们什么时候修改」源程序当中的什么文件,我们只要执行 make命令,我们的编译器都只会去编译和我们修改的文件有关的文件,其它的文件她连理 都不想去理的 下面我们学习 Makefile是如何编写的。 在 Makefile中也#开始的行都是注释行 Makefile中最重要的是描述文件的依赖关系的说 明.一般的格式是: 104 Linux操作系统C语言编程入广 TAB rule 第一行表示的是依赖关系第二行是规则 比如说我们上面的那个 Makefile文件的第二行 main: main. o myton 表小我们的目标 arget)main的依赖对象 (components)是main. o mytool1 o motor2 当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令.就象我们的上 面那个 Makefile第三行所说的一样要执行 gcc-o main main. o mtool. o stool2.o 注意规则一行中的TAB表示那里是一个TAB键 Makefile有三个非常有用的变量分别是$a,$^,代表的意义分别是 @-目标文件,$^所有的依赖文件,<-第一个依赖文件 如果我们使用上面三个变量那么我们可以简化我们的 Makefile文件为 #这是简化后的 Makefile main: main.o mytooll o mytool2o gcc -o (a main.o: main. c mvtoollh mytool2h g mytool1.0: mytooll c mytool1h gccC mylool2. 0: my tool2. c mytool2 h g 经过简化后我们的 makefile是简单了一点不过人们有时候还想简单一点划里我们学习 个 Makefile的缺省规则 C O: gcc-C.s< 这个规则表示所有的文件都是依赖与相应的c文件的例如 mytool. o赖手 mytool.c 这样 Makefile还可以变为: #这是再次简化后的 Makefile main: main.o mytoollo mytool2o g . C O: $< 好了我们的 Makefile也差不多了,如果想知道更多的关于 Makefile规则可以查看相应的 文档。 3程序库的链接 试 着编译下面这个程序 /*temp.c #include <math. h>. int main(int argc, char * -argv) 104 Linux操作系统C语言编程入门 do alu printf( of\nvalue 这个程序相当简单但是当我们用 gcc -o temp temp. c编译时会出现下面所示的错误 /tmp/cc33Kydu O: In function'main /tmp/cc33Kydu o( text+Oxe): undefined reference to ' log collect2: ld returned 1 exit status 岀现这个错误是因为编译器找不到og的具体实现虽然我们包括了止确的头文件,但是 我们在编 还是费连接确定的库在Jnu下为了使川数学函数我们须和数学库连 接,为此我们要加入1m选项 gcc -o temp temp. c -Im这样才能够正确的编译也许有人要问, 前面我们用 printf函数的时候怎么没有连按库呢?是这样的,对」一些常用的函数的实现gcc 编译器会自动去连接一些常用厍,这样我们就没有必要自己去指定了.有时候我们在编译程 序的时候还要指定车的路径这个时候我们要用到编译器的选项指定路径比如说我们有 个库在/hone/hot/mib下,这样我们编译的时候还要加上L/home/hot/mib 标准库来说我们没有必要指出路径只要它们在起缺省库的路径下就可以了系统的缺省库 的路径/ib/usr/ib/usr/ocal/lib在这三个路径下面的库我们可以不指定路径 还有一个问题,有时候我们使用了某个函数,但是我们不知道库的名字,这个时候怎么办 呢:?很抱歉对于这个问题我也不知道答案我只有一个傻办法首先我到标准库经下而士找 看看有没有和我用的函数相关的库我就这样找到了线程 hread函数的库文件 (libpthread. 当然,如果找不到,只有一个笨方法比如我要找sin这个函数所在的库.就只好用nmo /lib/. so grep sin>;/sin命令然后看~/sin文件到那里面去找了.在sin文件当中我会找到 这样的一行lbm-2.1.2.so:00009fa0wsin这样我就知道了sin在lbm-2.1.2.:o厍甲面我用-lm 选项就可以了(去掉前面的i和后面的版本标志、就剩下m了所以是m).如果你知道怎么 找请赶快告诉我我回非常感激的谢训 4程序的调试 我 们编写的程序不太可能一次性就会成功的,在我们的程序当中,会出现许许多多我 们门想不到的错误这个时候我们就要对我们的程序进行调试了 最常用的调试软件是gh果你想在图形界面下调试程序那么你现在可以选择xgdh记 得要在编译的时候加入g选项关于gdb的使用可以看gb的帮助文件于我没有用过这 个软件所以我也不能够说出如何使用.不过我不喜欢用gb跟踪一个稈序是很烦的事情 我一般用在程序当中输岀中回娈量的值米调试程序的当然你可以选择自己的办法没有 必要去学别人的现在有了许多IDE环境里面己经自己带了调试器了你可以选择几个试 试找出自己喜欢的一个用 5头文件和系统求助 [8o104] Linux操作系统C语言编程入门 有 时候我们只知道一个函数的大概形式,不记得确切的表达式,或者是不记得着函数 在那个头文件进行了说明这个时候我们可以求助系统 比如说我们想知道fead这个函数的确切形式我们只要执 man fread统就会输出着 凶数的详细解释的和这个函数所在的头文件< stdio. h>;说明了.如果我们要wrte这个函 数的说明,当我们执行 man write时,输出的结果却不是我们所需要的.因为我们要的是w ic这个函数的说明可是出来的却是wit这个命令的说叨为了得到wi的函叛说明 我们要用回m2W③表示我们用的wik这个函数是系统调用函数还有个我们常 月的是3表小函数是C的库函数 记住不管什么时候man都是我们的最好助于。 好了,这一章就讲这么多了,有了这些知识我们就可以进入激动人心的 Linux下的C程序 探险活动 of104 Linux操作系统C语言编程入门 第二章进程介绍 前言 这 篇文章是用米介绍在Inux下和进程相关的各个概念我们将会学到 ■进程的概念 ■进程的身份 ■进程的创建 守护进程的创建 [1010 【实例截图】
【核心代码】

标签:

实例下载地址

《 Linux操作系统下C语言编程入门》

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警