庫是預編譯的目標檔案(object files)的集合,它們可被鏈結程序式。靜態庫以後綴為『.a』的特殊的存檔檔案(archive file)儲存。
標準系統庫可在目錄/usr/lib與/lib中找到。比如,在類 unix 系統中 c 語言的數學庫一般儲存為檔案/usr/lib/libm.a。該庫中函式的原型宣告在標頭檔案/usr/include/math.h中。c 標準庫本身儲存為/usr/lib/libc.a,它包含 ansi/iso c 標準指定的函式,比如『printf』。對每乙個 c 程式來說,libc.a 都預設被鏈結。
下面的是乙個呼叫數學庫libm.a中sin函式的的例子,建立檔案calc.c:
#include#include
int main (
void
)
$ gcc -wall calc.c -o calc函式sin,未在本程式中定義也不在預設庫『libc.a』中;除非被指定,編譯器也不會鏈結『libm.a』。/tmp/ccbr6ojm.o: in function 'main':
/tmp/ccbr6ojm.o(.text+0x19): undefined reference to 『sin』
$ gcc -wall calc.c /usr/lib/libm.a -o calc函式庫『libm.a』包含所有數學函式的目標檔案,比如sin,cos,exp,log及sqrt。鏈結器將搜尋所有檔案來找到包含sin的目標檔案。
$ ./calc可執行檔案包含主程式的機器碼以及函式庫『libm.a』中sin對應的機器碼。the value of sin(2.0) is 0.909297
為避免在命令列中指定長長的路徑,編譯器為鏈結函式庫提供了快捷的選項『-l』。例如,下面的命令
$ gcc -wall calc.c -lm -o calc與我們上面指定庫全路徑『/usr/lib/libm.a』的命令等價。
一般來說,選項-lname使鏈結器嘗試鏈結系統庫目錄中的函式庫檔案libname.a。乙個大型的程式通常要使用很多-l選項來指定要鏈結的數學庫,圖形庫,網路庫等。
數學函式庫(基本版)
在c 語言中,除了 運算以外,其他的數 算都是通過函式的形式來實現的。這些數 算函式都在數學函式庫cmath中。要使用這些數學函式,必須在程式開始處寫上預編譯命令 include 列表如下 函式型別 cmath中對應的函式 絕對值函式 int abs int x double abs double ...
Lua基礎之math 數學函式庫
abs 取絕對值 math.abs 15 acos 反余弦函式 math.acos 0.5 1.04719755 asin 反正弦函式 math.asin 0.5 0.52359877 atan2 x y的反正切值 math.atan2 90.0,45.0 1.10714871 atan 反正切函式...
Lua基礎之math庫總結 數學函式庫
lua5.1中數學庫的所有函式如下表 math.pi 為圓周率常量 3.14159265358979323846 abs取絕對值 math.abs 15 acos 反余弦函式 math.acos 0.5 1.04719755 asin 反正弦函式 math.asin 0.5 0.52359877 a...