1. 程式人生 > >linux下GCC編譯C程式(一)

linux下GCC編譯C程式(一)



GCC的"-lm"選項,它告訴GCC檢視系統提供的數學庫(libm)。因為Linux和UNIX的系統函式庫通常以"lib"為字首,所以我們假設它存在。真正的函式庫位置隨系統的不同而不同,但它一般會位於目錄/lib或/usr/lib中,在這些目錄中還有數以百計的其他必需的系統函式庫。

4. 共享函式庫與靜態函式庫

Linux系統上的函式庫分為兩種不同的型別:共享的和靜態的

靜態函式庫:每次當應用程式和靜態連線的函式庫一起編譯時,任何引用的庫函式中的程式碼都會被直接包含進最終的二進位制程式。

共享函式庫:包含每個庫函式的單一全域性版本,它在所有應用程式之間共享。這一過程背後所涉及的機制相當複雜,但主要依靠的是現代計算機的虛擬記憶體能力,它允許包含庫函式的實體記憶體安全地在多個獨立使用者程式之間共享。

使用共享函式庫不僅減少了檔案
的容量和Linux應用程式在記憶體中覆蓋的區域,而且它還提高了系統的安全性。一個被許多不同程式同時呼叫的共享函式庫很可能會駐留在記憶體中,以在需要使用它時被立即使用,而不是位於磁碟的交換分割槽中。這有助於進一步減少一些大型Linux應用程式的裝載時間。

將上面的message.c作為共享庫函式使用的例子: