C語言的函數庫是多組經過驗證的常用函數的集合,編寫C語言程序時使用庫函數,既可以提高程序運行效率,又可以提高編程質量,使用方法如#include 和#include。
根據使用庫函數時,函數庫加載時機的差異,將函數庫分為靜態函數庫和動態函數庫,具體差異是:C語言程序如果使用靜態函數庫的函數,那么整個函數庫的代碼都會和C語言程序一起編譯成可執行代碼,程序的體積會膨脹;如果使用動態函數庫的函數,則C語言程序只會和函數庫文件名以及函數名一起編譯成可執行代碼(不編譯函數代碼),運行時去查找函數庫文件和函數體,程序的體積基本不變。
簡單概括就是,靜態函數庫是“以空間換時間”,增加程序體積,減少運行時間,如果靜態函數庫發生改變,則整個程序必須重新編譯,因為函數庫被整合到了最終可執行代碼中;動態函數庫則是“以時間換空間”,增加運行時間,減少程序體積,如果動態函數庫發生改變,程序無須重新編譯,因為函數庫沒有整合到最終可執行代碼中。
Linux中靜態函數庫表示為”libxxx.a”,windows中后綴名為”.lib”;Linux中動態函數庫表示為”libxxx.so”,windows中后綴名為”.dll”。函數庫中存放內容包括:(1)函數名稱,(2)函數目標代碼(二進制),(3)重定位信息(鏈接需要)等。
1 靜態函數庫的制作和使用
靜態函數庫的制作步驟可以用下圖來描述,具體包括

(1)編寫函數的.c文件(例如add.c、sub.c、mul.c和div.c)
(2)編寫Makefile,然后make,實現函數的編譯和歸檔入庫
函數的編譯:使用gcc 主站蜘蛛池模板: 邢台县| 桐梓县| 安阳市| 宿松县| 黄石市| 五莲县| 黄陵县| 松原市| 江津市| 乳源| 福海县| 东港市| 同心县| 景泰县| 比如县| 张家界市| 海口市| 江孜县| 开化县| 赤水市| 略阳县| 舒城县| 乌鲁木齐县| 南城县| 合阳县| 聂荣县| 鲁山县| 台州市| 上林县| 汨罗市| 英吉沙县| 凉山| 富平县| 台州市| 临桂县| 福安市| 永胜县| 碌曲县| 大同县| 德兴市| 张家界市|