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...

相關文章
相關標籤/搜索