linux程式設計之一:入門
1.C語言編譯器
歷史上,C語言編譯器被稱為cc。在起草POSIX標準時,因為已經不可能制訂出相容所有廠商的標準cc命令了,所以POSIX委員會決定為C語言編譯器建立新的命令,即為c89。只要使用這個命令,在任何機器上,它的編譯選項都是相同的。
2.標頭檔案
對C語言,標頭檔案幾乎總是在/usr/include目錄及其子目錄下面。那些依賴於特定Linux版本的標頭檔案通常可以在目錄/usr/include/sys和/usr/include/linux中找到
呼叫C編譯器時,可以用 -I 標誌來包含在子目錄或非標準目錄中的include檔案
3.庫檔案
標準系統庫檔案目錄:/lib和/usr/lib,編譯器預設情況下只搜尋標準目錄下的庫檔案。可以編譯時給出完整的庫檔名讓編譯器搜尋指定目錄下的庫檔案,如:
cc -o fred fred.c /usr/lib/libm.a
也可以寫成如下形式:
cc -o fred fred.c -lm
庫檔名必須是lib開頭,隨後的部分指明這是什麼庫,如m表示數學庫。字尾 .a 表示這是靜態庫,字尾 .so 表示這是動態庫。
-L 選項指定庫檔案搜尋路徑,注意這裡是路徑,沒有檔名。
4.靜態庫
靜態庫使用使用ar命令來建立,如:ar cvf libfoo.a bill. fred.o
在某些系統上,還必須為函式庫生成一個內容表,通過使用命令ranlib命令來完成這一步,如:ranlib libfoo.a
靜態情況下,他把庫直接載入到程式裡,而在動態連結的時候,他只是保留介面,將動態庫與程式程式碼獨立。這樣就可以提高程式碼的可複用度,和降低程式的耦合度。
另外,執行時,要保證主程式能找到動態庫,所以動態庫一般釋出到系統目錄中,要麼就在跟主程式相對很固定的路徑裡,這樣不管主程式在本機何時何地跑,都能找得到動態庫。而靜態庫只作用於連結時,執行主程式時,靜態庫檔案沒存在意義了
相關文章
- Linux系統程式設計入門Linux程式設計
- Linux程式設計入門-crypt(轉)Linux程式設計
- Linux程式設計入門-gpm(轉)Linux程式設計
- Linux程式設計入門 - crypt(轉)Linux程式設計
- 【Linux】Linux系統程式設計入門Linux程式設計
- Linux程式設計之一(轉)Linux程式設計
- Linux程式設計入門 - Dialog(轉)Linux程式設計
- Linux程式設計入門 - SVGALIB(轉)Linux程式設計SVG
- Linux網路程式設計入門 (轉載)Linux程式設計
- Linux下的shell程式設計入門(轉)Linux程式設計
- 入門程式碼程式設計程式設計
- Shell 程式設計入門程式設計
- shell程式設計入門程式設計
- 程式設計和網路程式設計入門程式設計
- 遊戲程式設計入門指南遊戲程式設計
- Number 1 — 程式設計入門程式設計
- Python程式設計入門Python程式設計
- csh shell程式設計入門程式設計
- TCSHshell程式設計入門(轉)程式設計
- shell程式設計入門指南程式設計
- 程式設計入門——壘積木學程式設計程式設計
- Linux 利器- Python 指令碼程式設計入門(一)LinuxPython指令碼程式設計
- Linux程式設計入門 - socket/inetd programming(轉)Linux程式設計
- Linux程式設計入門 - zlib的運用(轉)Linux程式設計
- Shell程式設計入門:Linux直譯器原理(轉)程式設計Linux
- Linux程式設計入門 fork/pthread/signals(轉)Linux程式設計thread
- Linux系統程式設計(16)——正規表示式入門Linux程式設計
- Linux程式設計入門 - termios/keymap/terminal(轉)Linux程式設計iOS
- JAVA NIO程式設計入門(二)Java程式設計
- Flink DataStream 程式設計入門AST程式設計
- 程式設計入門學什麼?程式設計
- JAVA NIO程式設計入門(一)Java程式設計
- JAVA NIO 程式設計入門(三)Java程式設計
- java Swing程式設計入門Java程式設計
- Shell程式設計入門例項程式設計
- 入門級的程式設計師程式設計師
- Linux命令列與shell指令碼程式設計入門經驗Linux命令列指令碼程式設計
- Linux程式設計入門 - termios/keymap/terminal program(轉)Linux程式設計iOS