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