自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

linux庫(kù)技術(shù)文檔學(xué)習(xí)筆記

系統(tǒng) Linux
本文全面講述了linux庫(kù)的概念,種類(lèi):靜態(tài)庫(kù)和共享庫(kù),庫(kù)存在的意義:共享庫(kù)的好處是,不同的應(yīng)用程序如果調(diào)用相同的庫(kù),那么在內(nèi)存里只需要有一份該共享庫(kù)的實(shí)例等多個(gè)知識(shí)點(diǎn)。

在linux中,Linux庫(kù)還是比較常用的,于是我研究了一下庫(kù)的各種文檔,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。 

1.什么是庫(kù)
在windows平臺(tái)和linux平臺(tái)下都大量存在著庫(kù)。本質(zhì)上來(lái)說(shuō)庫(kù)是一種可執(zhí)行代碼的二進(jìn)制形式,可以被操作系統(tǒng)載入內(nèi)存執(zhí)行。由于windows和linux的本質(zhì)不同,因此二者庫(kù)的二進(jìn)制是不兼容的。本文僅限于介紹linux庫(kù)。

2.庫(kù)的種類(lèi)
linux下的庫(kù)有兩種:靜態(tài)庫(kù)和共享庫(kù)。二者的不同點(diǎn)在于代碼被載入的時(shí)刻不同。靜態(tài)庫(kù)的代碼在編譯過(guò)程中已經(jīng)被載入可執(zhí)行程序,因此體積較大。共享庫(kù)的代碼是在可執(zhí)行程序運(yùn)行時(shí)才載入內(nèi)存的,在編譯過(guò)程中僅簡(jiǎn)單的引用,因此代碼體積較小。

3.庫(kù)存在的意義
庫(kù)是別人寫(xiě)好的現(xiàn)有的,成熟的,可以復(fù)用的代碼,你可以使用但要記得遵守許可協(xié)議。現(xiàn)實(shí)中每個(gè)程序都要依賴(lài)很多基礎(chǔ)的底層庫(kù),不可能每個(gè)人的代碼都從零開(kāi)始,因此庫(kù)的存在意義非同尋常。共享庫(kù)的好處是,不同的應(yīng)用程序如果調(diào)用相同的庫(kù),那么在內(nèi)存里只需要有一份該共享庫(kù)的實(shí)例。

4.庫(kù)文件是如何產(chǎn)生的在linux下
靜態(tài)庫(kù)的后綴是.a,它的產(chǎn)生分兩步
Step 1.由源文件編譯生成一堆.o,每個(gè).o里都包含這個(gè)編譯單元的符號(hào)表
Step 2.ar命令將很多.o轉(zhuǎn)換成.a,成文靜態(tài)庫(kù)
動(dòng)態(tài)庫(kù)的后綴是.so,它由gcc加特定參數(shù)編譯產(chǎn)生。
例如:
$ gcc -fPIC -c *.c $ gcc -shared -Wl,-soname, libfoo.so.1 -o libfoo.so.1.0 *.

5.庫(kù)文件是如何命名的,有沒(méi)有什么規(guī)范
在linux下,庫(kù)文件一般放在/usr/lib /lib下,靜態(tài)庫(kù)的名字一般為libxxxx.a,其中xxxx是該lib的名稱(chēng)動(dòng)態(tài)庫(kù)的名字一般為libxxxx.so.major.minor,xxxx是該lib的名稱(chēng),major是主版本號(hào), minor是副版本號(hào)

6.如何知道一個(gè)可執(zhí)行程序依賴(lài)哪些庫(kù)
ldd命令可以查看一個(gè)可執(zhí)行程序依賴(lài)的共享庫(kù),例如# ldd /bin/lnlibc.so.6
=> /lib/libc.so.6 (0×40021000)/lib/ld-linux.so.2
=> /lib/ld- linux.so.2 (0×40000000)
可以看到ln命令依賴(lài)于libc庫(kù)和ld-linux庫(kù)

7.可執(zhí)行程序在執(zhí)行的時(shí)候如何定位共享庫(kù)文件
當(dāng)系統(tǒng)加載可執(zhí)行代碼時(shí)候,能夠知道其所依賴(lài)的庫(kù)的名字,但是還需要知道絕對(duì)路徑此時(shí)就需要系統(tǒng)動(dòng)態(tài)載入器(dynamic linker/loader)對(duì)于elf格式的可執(zhí)行程序,是由ld-linux.so*來(lái)完成的,它先后搜索elf文件的 DT_RPATH段—環(huán)境變量LD_LIBRARY_PATH—/etc/ld.so.cache文件列表—/lib/,/usr/lib目錄找到庫(kù)文件后將其載入內(nèi)存

8.在新安裝一個(gè)庫(kù)之后如何讓系統(tǒng)能夠找到他
如果安裝在/lib或者/usr/lib下,那么ld默認(rèn)能夠找到,無(wú)需其他操作。
如果安裝在其他目錄,需要將其添加到/etc/ld.so.cache文件中,步驟如下
1.編輯/etc/ld.so.conf文件,加入庫(kù)文件所在目錄的路徑
2.運(yùn)行l(wèi)dconfig,該命令會(huì)重建/etc/ld.so.cache文件

【編輯推薦】

  1. 全面講述linux集群負(fù)載均衡
  2. 全面講解GNU/Linux編程概念
  3. 全面講解linux Debian基礎(chǔ)知識(shí)
  4. 詳細(xì)解剖Linux進(jìn)程管理
  5. 全面講述紅旗Linux版本成長(zhǎng)史
責(zé)任編輯:薛輩輩 來(lái)源: linux
相關(guān)推薦

2011-08-23 11:13:56

Lua

2009-10-27 09:35:58

ADSL接入技術(shù)

2009-10-28 10:55:27

2009-10-29 10:48:51

光纖接入技術(shù)

2009-10-30 09:42:39

Internet接入技

2009-08-28 10:48:00

linux操作系統(tǒng)linux學(xué)習(xí)掃瞄

2009-10-27 11:34:36

無(wú)線接入技術(shù)

2010-06-18 17:49:34

UML面向?qū)ο蠹夹g(shù)

2009-08-28 10:45:57

2009-08-28 10:57:42

linux操作系統(tǒng)linux學(xué)習(xí)目錄架構(gòu)

2009-08-28 10:51:21

linux操作系統(tǒng)linux學(xué)習(xí)SHELL

2009-08-28 10:53:57

linux操作系統(tǒng)linux學(xué)習(xí)VI

2009-08-28 10:49:31

linux操作系統(tǒng)linux學(xué)習(xí)帳號(hào)管理

2016-11-08 15:33:58

Linuxchmod學(xué)習(xí)筆記

2009-11-20 18:04:01

路由交換測(cè)試技術(shù)

2009-11-10 16:41:13

2010-09-26 14:01:10

JVM Log

2009-10-27 10:37:05

2009-10-28 10:41:49

寬帶接入技術(shù)

2009-12-24 14:08:50

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)