成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux中的兩種共享代碼方式靜態庫和動態庫

系統 Linux
隨著軟件開發的發展,人們發現很多應用的代碼是相同的,也就是說這些代碼可以被共享,因此,人們提出了靜態庫和動態庫兩種方案來解決代碼共享的問題。

1.共享代碼

隨著軟件開發的發展,人們發現很多應用的代碼是相同的,也就是說這些代碼可以被共享,因此,人們提出了靜態庫和動態庫兩種方案來解決代碼共享的問題。

2.靜態庫

靜態庫,顧名思義,它是靜態的,也就是說它不會被動態編譯,它只會靜態編譯,節省了編譯時間,提高了編譯速度。同一份靜態庫,可以被多個程序進行編譯,也就實現了代碼的復用共享。

3.動態庫

動態庫,就是程序應用啟動的時候,動態加載的,因為它一般是在系統運行的時候就已經運行的動態庫,因此其它應用可以直接使用它,并且同一個動態庫可以被多個應用共享使用,在系統中對于一個動態庫只會存在一份,這大大節省了內存空間,大大提升了系統的性能。

在linux系統中,動態庫一般以.so形式命名,表示share object。

很多時候,你很難知道一個應用需要哪些動態庫,不過我們有個工具ldd可以幫助你查看一個應用需要哪些動態庫。

如果一些動態庫沒有找到的話,程序就無法正常運行,這也是你會看到很多程序啟動的時候提示缺少xx.so的原因。

如果你的程序需要xx.so動態庫,而系統路徑中沒有它的話,你可以通過LD_LIBRARY_PATH 將你需要的動態庫添加到系統路徑中。

查看一個文件使用了什么連接器可以使用file命令,一般程序都會使用/lib64/ld-linux-x86-64.so.2這個文件,而這個文件其實會指向一個ld-2.xx.so文件。

4.動態加載器ld.so

在linux系統中,動態庫都是通過ld.so來進行管理的,它首先會根據應用的編譯信息查找相對或者絕對路徑來查找動態庫,然后就會通過環境變量LD_LIBRARY_PATH來查找動態庫,最后它會根據/etc/ld.so.cache緩存來查找動態庫。

因此,當我們像系統中添加一個動態庫的時候我們有兩種方式,一種是直接放入到/usr/lib64文件夾里面,不過這需要你有root權限,第二種就是通過LD_LIBRARY_PATH配置我們的動態庫路徑。

5.程序引入動態庫

在程序編譯的時候,我們可以通過指定編譯參數來引入動態庫。

例如,當我們使用gcc來進行編譯的時候,我們可以通過-l來表示鏈接庫名稱,通過-Ldir來指定動態庫路徑。 當我們使用g++來進行編譯的時候,-L可以用來指定動態庫的路徑,進行程序動態庫的鏈接。

6.總結

人們為了減少冗余代碼,提出了共享庫的概念,在鏈接的時候和程序一同打包成一個可執行文件的這個庫就是靜態庫,反之,在鏈接的時候不將動態庫打包進可執行文件,只是標記運行需要此共享庫,這就是動態庫。

靜態庫是同程序一同打包的,因此它不需要環境的依賴,而動態庫是程序執行時候需要引用的,因此它對環境有依賴,這也是為什么很多依賴動態庫的文件執行的時候報錯缺少動態庫的原因,那是操作系統缺少對應的動態庫導致的。

靜態庫增大了程序的體積,同時多個程序對相同靜態庫的鏈接也占用了大量的內存,因此,才有了動態庫的出現,可以說兩者都是為了解決代碼共享復用的問題,而且兩者是相輔相成的關系。


責任編輯:華軒 來源: 今日頭條
相關推薦

2023-03-15 15:58:11

Python動態庫C++

2010-03-16 15:23:32

java動態載入

2010-11-29 09:56:00

sybase數據庫備份

2011-06-16 10:02:08

JAVA靜態載入

2024-02-28 08:10:15

Linux靜態庫動態庫

2024-02-04 09:24:45

MyBatisSQL語句Spring

2009-12-18 09:45:12

ADSL無線共享上網

2010-04-06 10:52:06

Oracle數據庫

2011-06-08 11:15:21

web.configASP.NET

2010-04-28 16:23:18

Oracle數據庫

2012-12-24 13:30:34

iOS

2015-11-26 10:05:21

MySQL服務增加從庫

2011-06-09 11:11:35

QT 靜態庫 動態庫

2020-11-09 11:31:03

鴻蒙App

2010-10-26 14:06:43

oracle連接遠程數

2011-08-30 17:48:48

Oracle數據庫日期to_char方式to_date方式

2010-03-04 10:17:57

Linux動態庫

2011-08-08 14:13:47

iPhone XML NSXMLParse

2011-03-03 10:26:04

Pureftpd

2021-05-27 10:57:01

TCP定時器網絡協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操天天射综合网 | 欧美视频日韩 | www.久久99 | 欧美成人精品一区二区三区 | 99久久婷婷 | 一区二区在线免费观看 | 亚洲国产激情 | 国产免费又色又爽又黄在线观看 | 99热国产免费 | 久久精品一 | 成人精品视频在线观看 | 51ⅴ精品国产91久久久久久 | 一区二区中文 | 天天干干 | 精品国产乱码久久久久久牛牛 | www四虎影视| 日日天天| 亚洲成人自拍 | 国产亚洲一区二区在线观看 | 亚洲高清在线视频 | 中国美女av | 亚洲美女一区二区三区 | 爱操影视 | 久草在线视频中文 | 久久久精 | 久久国产一区二区 | 亚洲九九色 | 国产精品久久久久不卡 | 日韩成人高清在线 | 国产成人精品综合 | 一级毛片大全免费播放 | 亚洲精品免费在线观看 | 久久网一区二区三区 | 成人福利网 | 一区二区亚洲 | 亚洲伊人精品酒店 | 日韩一区二区免费视频 | 日韩三级在线 | 成人性生交大片免费看中文带字幕 | 亚洲精品自拍视频 | 国产综合网站 |