課程
/后端開發(fā)
/C
/Linux C語言編程基本原理與實踐
把代碼編譯成機器代碼的文件,就是靜態(tài)庫嗎
2015-11-05
源自:Linux C語言編程基本原理與實踐 4-2
正在回答
庫是寫好的現(xiàn)有的,成熟的,可以復用的代碼?,F(xiàn)實中每個程序都要依賴很多基礎(chǔ)的底層庫,不可能每個人的代碼都從零開始,因此庫的存在意義非同尋常。
本質(zhì)上來說庫是一種可執(zhí)行代碼的二進制形式,可以被操作系統(tǒng)載入內(nèi)存執(zhí)行。庫有兩種:靜態(tài)庫(.a、.lib)和動態(tài)庫(.so、.dll)。
所謂靜態(tài)、動態(tài)是指鏈接。
之所以成為【靜態(tài)庫】,是因為在鏈接階段,會將匯編生成的目標文件.o與引用到的庫一起鏈接打包到可執(zhí)行文件中。因此對應(yīng)的鏈接方式稱為靜態(tài)鏈接。
試想一下,靜態(tài)庫與匯編生成的目標文件一起鏈接為可執(zhí)行文件,那么靜態(tài)庫必定跟.o文件格式相似。其實一個靜態(tài)庫可以簡單看成是一組目標文件(.o/.obj文件)的集合,即很多目標文件經(jīng)過壓縮打包后形成的一個文件。靜態(tài)庫特點總結(jié):
l靜態(tài)庫對函數(shù)庫的鏈接是放在編譯時期完成的。
?程序在運行時與函數(shù)庫再無瓜葛,移植方便。
l 浪費空間和資源,因為所有相關(guān)的目標文件與牽涉到的函數(shù)庫被鏈接合成一個可執(zhí)行文件。
舉報
本視頻教程介紹C語言基本工作原理以及適用與C的實際開發(fā)方式
1 回答在makefile中如何鏈接靜態(tài)庫和動態(tài)庫
4 回答請問這是什么回事
3 回答請問這個是什么錯誤。
2 回答請問一下,-c的作用是什么
1 回答編譯問題 。./configure是干什么的?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2015-11-05
庫是寫好的現(xiàn)有的,成熟的,可以復用的代碼?,F(xiàn)實中每個程序都要依賴很多基礎(chǔ)的底層庫,不可能每個人的代碼都從零開始,因此庫的存在意義非同尋常。
本質(zhì)上來說庫是一種可執(zhí)行代碼的二進制形式,可以被操作系統(tǒng)載入內(nèi)存執(zhí)行。庫有兩種:靜態(tài)庫(.a、.lib)和動態(tài)庫(.so、.dll)。
所謂靜態(tài)、動態(tài)是指鏈接。
之所以成為【靜態(tài)庫】,是因為在鏈接階段,會將匯編生成的目標文件.o與引用到的庫一起鏈接打包到可執(zhí)行文件中。因此對應(yīng)的鏈接方式稱為靜態(tài)鏈接。
試想一下,靜態(tài)庫與匯編生成的目標文件一起鏈接為可執(zhí)行文件,那么靜態(tài)庫必定跟.o文件格式相似。其實一個靜態(tài)庫可以簡單看成是一組目標文件(.o/.obj文件)的集合,即很多目標文件經(jīng)過壓縮打包后形成的一個文件。靜態(tài)庫特點總結(jié):
l靜態(tài)庫對函數(shù)庫的鏈接是放在編譯時期完成的。
?程序在運行時與函數(shù)庫再無瓜葛,移植方便。
l 浪費空間和資源,因為所有相關(guān)的目標文件與牽涉到的函數(shù)庫被鏈接合成一個可執(zhí)行文件。