新聞中心
動(dòng)態(tài)鏈接庫(kù)(Dynamic Linking Library)是一種程序設(shè)計(jì)技術(shù),可以在不同的程序享程序庫(kù)。Linux作為一個(gè)開(kāi)源的操作系統(tǒng),具有非常好的兼容性和可移植性,因此能夠使用廣泛。在Linux環(huán)境中,動(dòng)態(tài)鏈接庫(kù)的使用方法也非常簡(jiǎn)單和靈活,用戶可以根據(jù)不同的需求設(shè)置不同的庫(kù)文件路徑。本文將介紹。

創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元汝城做網(wǎng)站,已為上家服務(wù),為汝城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
1.動(dòng)態(tài)鏈接庫(kù)的概念和作用
動(dòng)態(tài)鏈接庫(kù)又稱共享庫(kù),是一種在程序運(yùn)行時(shí)加載執(zhí)行的庫(kù)文件。它可以被多個(gè)程序使用,避免了程序代碼的重復(fù),提高了程序的重用性和可維護(hù)性。與之相對(duì)的是靜態(tài)鏈接庫(kù),它在編譯時(shí)鏈接到程序中,使程序變得較大且不能共享。在Linux環(huán)境下,動(dòng)態(tài)鏈接庫(kù)有著重要的作用,可以提高程序的運(yùn)行效率和開(kāi)發(fā)效率。
2.動(dòng)態(tài)鏈接庫(kù)的查找路徑
在Linux下,動(dòng)態(tài)鏈接庫(kù)在程序執(zhí)行時(shí)需要被加載到內(nèi)存中,因此需要找到動(dòng)態(tài)鏈接庫(kù)所在的路徑。在終端中可以使用ldd命令查看程序所調(diào)用的動(dòng)態(tài)鏈接庫(kù)列表。
$ ldd test
linux-vdso.so.1 (0x00007fff387b8000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f259bb2e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f259b941000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f259b5f3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f259c8d3000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f259b3db000)
從以上列表中可以看出,程序所調(diào)用的動(dòng)態(tài)鏈接庫(kù)文件的路徑是/lib/x86_64-linux-gnu/或/usr/lib/x86_64-linux-gnu/,這些路徑稱為默認(rèn)的查找路徑。Linux系統(tǒng)會(huì)在這些路徑下查找程序要用到的庫(kù)文件。
用戶也可以通過(guò)設(shè)置環(huán)境變量來(lái)添加自定義的動(dòng)態(tài)鏈接庫(kù)查找路徑。有兩個(gè)環(huán)境變量分別是LD_LIBRARY_PATH和LD_PRELOAD。
3. LD_LIBRARY_PATH
LD_LIBRARY_PATH是Linux系統(tǒng)用來(lái)設(shè)置用戶自定義動(dòng)態(tài)鏈接庫(kù)文件查找路徑的環(huán)境變量,是一個(gè)包含路徑列表的字符串,路徑之間用冒號(hào)分隔。通過(guò)設(shè)置該變量,用戶可以指定程序加載的動(dòng)態(tài)鏈接庫(kù)所在的路徑。如:
$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
$ ldd /bin/bash
linux-vdso.so.1 => (0x00007ffdfd5ee000)
libtinfo.so.5 => /usr/local/lib/libtinfo.so.5 (0x00007f7d2ce6f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7d2cc6b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7d2c88c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7d2d0a6000)
從以上列表中可以看出,程序所調(diào)用的動(dòng)態(tài)鏈接庫(kù)文件的路徑是/usr/local/lib/,該路徑已經(jīng)被添加到了LD_LIBRARY_PATH環(huán)境變量中。用戶可以通過(guò)在.bashrc文件中設(shè)置LD_LIBRARY_PATH變量,實(shí)現(xiàn)永久修改系統(tǒng)的動(dòng)態(tài)鏈接庫(kù)查找路徑。
4. LD_PRELOAD
LD_PRELOAD是Linux系統(tǒng)用來(lái)加載指定的動(dòng)態(tài)鏈接庫(kù)文件的環(huán)境變量。用戶可以使用LD_PRELOAD在程序運(yùn)行之前動(dòng)態(tài)地加載一些共享庫(kù),從而實(shí)現(xiàn)一些特殊的功能。如:
$ LD_PRELOAD=/usr/lib/libmylibrary.so.1 ls
在以上命令中,LS命令會(huì)在運(yùn)行之前先加載/lib/libmylibrary.so.1庫(kù)文件,從而實(shí)現(xiàn)特殊的功能。在實(shí)際開(kāi)發(fā)中,用戶可以根據(jù)不同的需求通過(guò)設(shè)置LD_PRELOAD實(shí)現(xiàn)自己的定制化需求,在一定程度上提高了系統(tǒng)的擴(kuò)展性和靈活性。
在Linux環(huán)境下,動(dòng)態(tài)鏈接庫(kù)的使用方法非常簡(jiǎn)單和靈活。通過(guò)設(shè)置路徑和環(huán)境變量,用戶可以實(shí)現(xiàn)自己的特定需求,提高系統(tǒng)的可維護(hù)性和擴(kuò)展性。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
我用虛擬機(jī)安裝linux,然后蹦出缺少libxml2.dll文件,請(qǐng)問(wèn)這個(gè)文件放在哪里啊?
你的 Windows 什么版本啊?這東西貌似早就尺旦自帶了。
這個(gè)東西是微陵銀擾軟的一個(gè) xml 語(yǔ)言支持庫(kù),搏液我建議你去下載這個(gè)支持程序的安裝文件,而不是去隨便下載個(gè) dll 就扔進(jìn)計(jì)算機(jī)里面。
C:Windows/system32
求Linux文件系統(tǒng)的目錄結(jié)構(gòu)
文件系統(tǒng)的組織結(jié)構(gòu)分析;
文件系統(tǒng)的組織結(jié)構(gòu)分析,我們能分析什么呢?也就是當(dāng)我們列/目錄時(shí),所看到的/usr、/etc …… …… /var 等殲廳目錄是做什么用的,這些目錄是不是有些特定的用途。無(wú)論哪個(gè)哪個(gè)版本的Linux系統(tǒng),都有這些目錄,這些目錄應(yīng)該是標(biāo)準(zhǔn)的。當(dāng)然各個(gè)Linux發(fā)行版本也會(huì)存在一些小小的差異,但總體來(lái)說(shuō),還是大體差不多。
Linux發(fā)行版本之間的差別其實(shí)很少,差別氏派隱主要表現(xiàn)在系統(tǒng)管理的特色工具以及軟件包管理方式的不同,除此之外,沒(méi)有什么大的差別; 比如Fedora軟件包管理工具是rpm,而Slackware是pkgtool 或installpkg等;
我們接著說(shuō)文件系統(tǒng)組織結(jié)構(gòu)。羨橋
/ Linux文件系統(tǒng)的入口,也是處于更高一級(jí)的目錄;
/bin 基礎(chǔ)系統(tǒng)所需要的那些命令位于此目錄,也是最小系統(tǒng)所需要的命令;比如 ls、cp、mkdir等命令;功能和/usr/bin類似,這個(gè)目錄中的文件都是可執(zhí)行的,普通用戶都可以使用的命令。做為基礎(chǔ)系統(tǒng)所需要的最基礎(chǔ)的命令就是放在這里。
/boot Linux的內(nèi)核及引導(dǎo)系統(tǒng)程序所需要的文件,比如 vmlinuz initrd.img 文件都位于這個(gè)目錄中。在一般情況下,GRUB或LILO系統(tǒng)引導(dǎo)管理器也位于這個(gè)目錄;
/dev 設(shè)備文件存儲(chǔ)目錄,比如聲卡、磁盤…… ……
/etc 系統(tǒng)配置文件的所在地,一些服務(wù)器的配置文件也在這里;比如用戶帳號(hào)及密碼配置文件;
/home 普通用戶家目錄默認(rèn)存放目錄;
/lib 庫(kù)文件存放目錄
更加詳細(xì)的在這,
下面這有個(gè)圖
另外你要完全了解linux的文件系統(tǒng)還要了解linux的文件的數(shù)據(jù)結(jié)構(gòu)
linux操作系返配統(tǒng)中的主要目錄及目錄內(nèi)容由文件系統(tǒng)層次結(jié)構(gòu)標(biāo)準(zhǔn)(英語(yǔ):filesystem
hierarchy
standard,fhs)定義。
在fhs中,所有的文件和目錄都出現(xiàn)在根目錄”/”下,漏陵指即使他們存儲(chǔ)在不同的物理設(shè)備中。但是請(qǐng)注意,這些目錄中的一些可能或可能不會(huì)在linux系統(tǒng)上出現(xiàn),這取決于系統(tǒng)是否含有某些子系統(tǒng),例如
x
window系統(tǒng)
的安裝與否。
下面是fhs中所定義的一些目錄,和目錄的描述:
/bin
二進(jìn)制可執(zhí)行命令
/dev
設(shè)備特殊文件
/etc
系統(tǒng)管理和配置文件
/etc/rc.d
啟動(dòng)的配置文件和腳本
/home
用戶主目錄的基點(diǎn),比如用戶user的主目錄就是/home/user,可以用~user表示
/lib
標(biāo)準(zhǔn)程序設(shè)計(jì)庫(kù),又叫動(dòng)態(tài)鏈接共享庫(kù),作汪純用類似windows里的.dll文件
/in
系統(tǒng)管理命令,這里存放的是系統(tǒng)管理員使用的管理程序
/tmp
公用的臨時(shí)文件存儲(chǔ)點(diǎn)
/root
系統(tǒng)管理員的主目錄
/mnt
系統(tǒng)提供這個(gè)目錄是讓用戶臨時(shí)掛載其他的文件系統(tǒng)。
/lost+found
這個(gè)目錄平時(shí)是空的,系統(tǒng)非正常關(guān)機(jī)而留下“無(wú)家可歸”的文件(windows下叫什么.chk)就在這里
/proc
虛擬的目錄,是系統(tǒng)內(nèi)存的映射。可直接訪問(wèn)這個(gè)目錄來(lái)獲取系統(tǒng)信息。
/var
某些大文件的溢出區(qū),比方說(shuō)各種服務(wù)的日志文件
/usr
最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個(gè)目錄。其中包含:
/usr/x11r6
存放x
window的目錄
/usr/bin
眾多的應(yīng)用程序
/usr/in
超級(jí)用戶的一些管理程序
/usr/doc
linux文檔
/usr/include
linux下開(kāi)發(fā)和編譯應(yīng)用程序所需要的頭文件
/usr/lib
常用的動(dòng)態(tài)鏈接庫(kù)和軟件包的配置文件
/usr/man
幫助文檔
/usr/src
源代碼,linux內(nèi)核的源代碼就放在/usr/src/linux里
/usr/local/bin
本地增加的命令
/usr/local/lib
本地增加的庫(kù)
跟Unix類似。
怎樣理解樹(shù)型目錄結(jié)構(gòu)?其實(shí)含漏跟Windows差不多,只是Linux沒(méi)有C:的盤符概念,而是用一個(gè)/“統(tǒng)治”了所有的文談察爛件沒(méi)渣和文件夾,形成樹(shù)型結(jié)構(gòu)。
關(guān)于linux dll文件路徑的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
標(biāo)題名稱:Linux下動(dòng)態(tài)鏈接庫(kù)文件路徑的使用方法(linuxdll文件路徑)
分享URL:http://fisionsoft.com.cn/article/cddphdj.html


咨詢
建站咨詢
