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