APUE学习笔记-一些准备

  从开始看APUE已经有快一个星期了,因为正好遇上这几天清明节放假,可贵有了三天空闲假期能够不受打扰的学习APUE,如今已经看完前六章了,里面的大部分例程也都亲自编写,调试过了。但总以为这样学过就忘,所以决定把这个学习过程记录下来,学到后面章节的时候回顾前面的章节,作到温故知新。也能够将本身在学习过程当中遇到的问题记录下来。html

  本书对UNIX系统的提供的接口的方方面面进行了讲解,中间还穿插介绍了不少UNIX或类UNIX系统的相关知识,即便如今我只是看过了前六章,也感受学到了很多知识,解决了我之前对LINUX系统的很多疑惑。天天都可以学习到本身不知道的东西,感受很好。函数

  本书提供了全书的全部例程,能够在该网站获取:http://www.apuebook.com/code3e.html,我用的是第三版,你们能够根据本身的状况选择下载。可是在第一个例程就遇到了问题,写完程序,编译,报错:$gcc c1_3.c学习

  /tmp/cchudidN.o: In function `main':
  1_3.c:(.text+0x20): undefined reference to `err_quit'
  1_3.c:(.text+0x5b): undefined reference to `err_sys'
  collect2: ld returned 1 exit status
网站

  (因为已解决了该问题,也未记录,所以该错误我是引用自这篇文章,也是根据该同窗的方法设置好了整个须要的配置环境;ui

  http://blog.csdn.net/blitzskies/article/details/42171089)spa

  err_quit与err_sys函数都是在apue.h中定义的,虽然在程序中引用了,但gcc编译时须要本身指定引用的外部库,printf这些是系统的库,已经在环境变量中指定了,不须要咱们指定。但咱们须要的这个库在哪呢,如今就要回到咱们下载的那个apue文件包了,解压,文件目录下有个README,里面清楚的说了,make一下(make命令的做用是保持一组程序最新,用于在处理大型程序修改后,自动处理因为模块间复杂的依赖关系而须要从新编译的那些模块的工做)。而后咱们会在lib文件夹中发现libapue.a文件(.a文件是LINUX系统中的静态连接库文件),这就是咱们须要的库文件。而后咱们要把它引入咱们的LIBRARY_PATH环境变量中,还有就是咱们在每一个例程程序中都会引用的apue.h,它在include文件夹中,咱们要把它引入C_INCLUDE_PATH环境变量中,设置这两个变量的目的是让程序能够找到库文件与头文件,输入命令:.net

 

每次编译程序时都加入-lapue,就没问题了调试

运行结果以下:code

第一章主要是UNIX导论,全部的部分在后面章节都会详细讲解。htm

第二章主要是UNIX标准的介绍,不一样系统上的实现上的一些区别。有几个函数,用来告诉你特定系统上实际支持的限制:

#icnlude <unistd.h>

long sysconf(int name);

long pathconf(const char *pathname,int name);

log fpathconf(int fd,int name);

sysconf函数中的参数name用于标识系统限制,若系统支持,则返回相应值,出错返回-1。

pathconf与fpathconf用于获取name标识对pathname所指文件的限制与否,若系统支持,则返回相应值,出错返回-1。

当有系统函数不了解是能够用man命令查看。

 

To be continued...

相关文章
相关标签/搜索