日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
「如何在Linux中使用動(dòng)態(tài)庫(kù)并設(shè)置當(dāng)前路徑」 (linux 動(dòng)態(tài)庫(kù) 當(dāng)前路徑)

如何在Linux中使用動(dòng)態(tài)庫(kù)并設(shè)置當(dāng)前路徑

我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、斗門ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的斗門網(wǎng)站制作公司

在Linux下使用動(dòng)態(tài)庫(kù)可以大大節(jié)省內(nèi)存空間,提高程序的執(zhí)行效率。動(dòng)態(tài)庫(kù)又稱共享庫(kù),在程序運(yùn)行時(shí)才會(huì)被載入內(nèi)存,與之相對(duì)的是靜態(tài)庫(kù),它們?cè)诰幾g階段就會(huì)被鏈接到程序中。本文將介紹如何在Linux中使用動(dòng)態(tài)庫(kù),并設(shè)置當(dāng)前路徑。

一、動(dòng)態(tài)庫(kù)的介紹

動(dòng)態(tài)庫(kù)由多個(gè)模塊組成,每個(gè)模塊都是一個(gè)獨(dú)立的二進(jìn)制文件,它們可以相互依賴。在程序運(yùn)行時(shí),只有當(dāng)需要使用某個(gè)模塊時(shí)才會(huì)加載這個(gè)模塊。這使得動(dòng)態(tài)庫(kù)比靜態(tài)庫(kù)更為靈活,在程序中經(jīng)常被使用。

動(dòng)態(tài)庫(kù)的文件格式一般為.so,Linux中的庫(kù)文件都安裝在默認(rèn)的系統(tǒng)路徑下,如/usr/lib、/lib等,程序在編譯時(shí)會(huì)自動(dòng)鏈接到這些庫(kù)文件。

二、使用動(dòng)態(tài)庫(kù)

在程序中使用動(dòng)態(tài)庫(kù)需要使用到動(dòng)態(tài)鏈接庫(kù)(ld)。在編譯時(shí),需要使用-l選項(xiàng)指定動(dòng)態(tài)庫(kù)的名字,編譯器會(huì)在默認(rèn)的庫(kù)路徑下查找這個(gè)庫(kù),并鏈接到程序中。

例如:

gcc -o myapp myapp.c -lm

其中,-lm表示鏈接到數(shù)學(xué)庫(kù)(libm.so)。

如果動(dòng)態(tài)庫(kù)不在默認(rèn)的庫(kù)路徑下,可以使用-L選項(xiàng)指定動(dòng)態(tài)庫(kù)的搜索路徑。

例如:

gcc -o myapp myapp.c -L /usr/local/lib/ -lmylib

其中,-L /usr/local/lib/指定了動(dòng)態(tài)庫(kù)的搜索路徑,-lmylib表示鏈接到名為libmylib.so的動(dòng)態(tài)庫(kù)。

三、設(shè)置當(dāng)前路徑

在程序中使用動(dòng)態(tài)庫(kù)時(shí),程序會(huì)在默認(rèn)的搜索路徑中查找動(dòng)態(tài)庫(kù),如果沒(méi)有找到,那么程序就無(wú)法執(zhí)行。為了避免這種情況的發(fā)生,可以將程序需要使用的動(dòng)態(tài)庫(kù)放在程序的當(dāng)前路徑下。

在Linux中,可以使用LD_LIBRARY_PATH環(huán)境變量來(lái)設(shè)置程序的當(dāng)前路徑。

例如:

export LD_LIBRARY_PATH=/home/user/mylibs/:$LD_LIBRARY_PATH

其中,/home/user/mylibs/是自定義的當(dāng)前路徑,$LD_LIBRARY_PATH是保留的環(huán)境變量,表示將當(dāng)前路徑添加到默認(rèn)的搜索路徑之前。

四、

本文介紹了在Linux中使用動(dòng)態(tài)庫(kù)及設(shè)置當(dāng)前路徑的方法。動(dòng)態(tài)庫(kù)可以提高程序的執(zhí)行效率,使程序更靈活。設(shè)置當(dāng)前路徑可以保證程序能夠正確地搜索到動(dòng)態(tài)庫(kù),避免出現(xiàn)鏈接錯(cuò)誤的問(wèn)題。需要注意的是,動(dòng)態(tài)庫(kù)的使用需要在編譯時(shí)指定庫(kù)的名字,同時(shí)也需要將庫(kù)文件放在正確的位置,才能夠被程序正確加載。

相關(guān)問(wèn)題拓展閱讀:

  • linux編譯的c++程序位置

linux編譯的c++程序位置

linux系統(tǒng)編譯C++程序時(shí)頭?件和庫(kù)?件搜索路徑

C++編譯時(shí),教科書中寫道:#include “headfile.h”優(yōu)先在當(dāng)前?錄查找頭?件;#include 從系統(tǒng)默認(rèn)路徑查找頭?件。先

前以為系統(tǒng)默認(rèn)路徑是環(huán)境變量$PATH指定的路徑,在系統(tǒng)上?查,傻了眼:

-bash-3.2$ echo$PATH

/usr/local/bin:/bin:/usr/bin:/in:/usr/in:/usr/X11R6/bin:/usr/java/j2re1.4.0/bin:/usr/atria/bin:/ccase/bin:/home/devcomp

全是bin?錄,$PATH是運(yùn)?可執(zhí)??件時(shí)的搜索路徑,與include頭?件的搜索路徑?關(guān),可能不少?犯了我這樣的錯(cuò)誤。

頭?件:

1. #include“headfile.h”

搜索順序?yàn)椋?/p>

①先搜索當(dāng)前?錄

②然后搜索-I指定的?錄

③再搜索gcc的環(huán)境變量CPLUS_INCLUDE_PATH(C程序使?的是C_INCLUDE_PATH)

④最后搜索gcc的內(nèi)定?錄

/usr/include

/usr/local/include

/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include

各?錄存在相同?件時(shí),先找到哪個(gè)使?哪個(gè)。

2. #include

①先搜索-I指定的?錄

②然后搜索gcc的環(huán)境變量CPLUS_INCLUDE_PATH

③最后搜索gcc的內(nèi)定?錄

/usr/include

/usr/local/include

/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include

與上?的相同,各?錄存在相同?件時(shí),先找到哪個(gè)使?哪個(gè)。這?要注意,#include?式不會(huì)搜索當(dāng)前?錄!

這?要說(shuō)下include的內(nèi)定?錄,它不是由$PATH環(huán)境變量指定的,?是由g++的配置prefix指定的(知道它在安裝g++時(shí)可以指定,不知安

裝后如何修改的,可能是修改配置?件,需要時(shí)再研究下):

-bash-3.2$ g++ -v

Using built-inspecs.

Target:x86_64-redhat-linux

Configured with:../configure –prefix=/usr –mandir=/usr/share/man–infodir=/usr/share/info –enable-shared –enable-threads=posix–enable-checking=release –with-system-zlib –enable-__cxa_atexit–disable-libunwind-exceptions –enable-libgcj-multifile–enable-languages=c,c++,objc,obj-c++,java,fortran,ada–enable-java-awt=gtk –disable-dssi –enable-plugin–with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre–with-cpu=generic –host=x86_64-redhat-linux

Thread model:posix

gcc version 4.1.(Red Hat 4.1.2-46)

在安裝g++時(shí),指定了prefix,那么內(nèi)定搜索?錄就是:

Prefix/include

Prefix/local/include

Prefix/lib/gcc/–host/–version/include

編譯時(shí)可以通過(guò)-nostdinc++選項(xiàng)屏蔽對(duì)內(nèi)定?錄搜索頭?件。

庫(kù)?件:

編譯的時(shí)候:

①gcc會(huì)去找-L

②再找gcc的環(huán)境變量LIBRARY_PATH

③再找內(nèi)定?錄/lib /usr/lib/usr/local/lib 這是當(dāng)初compilegcc時(shí)寫在程序內(nèi)的(不可配置的?)

運(yùn)?時(shí)動(dòng)態(tài)庫(kù)的搜索路徑:

動(dòng)態(tài)庫(kù)的搜索路徑搜索的先后順序是:

①編譯?標(biāo)代碼時(shí)指定的動(dòng)態(tài)庫(kù)搜索路徑(這是通過(guò)gcc 的參數(shù)”-Wl,-rpath,”指定。當(dāng)指定多個(gè)動(dòng)態(tài)庫(kù)搜索路徑時(shí),路徑之間?冒號(hào)”:”分隔)

②環(huán)境變量LD_LIBRARY_PATH指定的動(dòng)態(tài)庫(kù)搜索路徑(當(dāng)通過(guò)該環(huán)境變量指定多個(gè)動(dòng)態(tài)庫(kù)搜索路徑時(shí),路徑之間?冒號(hào)”:”分隔)

③配置?件/etc/ld.so.conf中指定的動(dòng)態(tài)庫(kù)搜索路徑;

④默認(rèn)的動(dòng)態(tài)庫(kù)搜索路徑/lib;

⑤默認(rèn)的動(dòng)態(tài)庫(kù)搜索路徑/usr/lib。

(應(yīng)注意動(dòng)態(tài)庫(kù)搜尋路徑并不包括當(dāng)前?件夾,所以當(dāng)即使可執(zhí)??件和其所需的so?件在同??件夾,也會(huì)出現(xiàn)找不到so的問(wèn)題,類同#include不搜索當(dāng)前?錄)

百度文庫(kù)VIP限時(shí)優(yōu)惠現(xiàn)在開(kāi)通,立享6億+VIP內(nèi)容

立即獲取

linux系統(tǒng)編譯C++程序時(shí)頭文件和庫(kù)文件搜索路徑

linux系統(tǒng)編譯C++程序時(shí)頭?件和庫(kù)?件搜索路徑

C++編譯時(shí),教科書中寫道:#include “headfile.h”優(yōu)先在當(dāng)前?錄查找頭?件;#include 從系統(tǒng)默認(rèn)路徑查找頭?件。先

前以為系統(tǒng)默認(rèn)路徑是環(huán)境變量$PATH指定的路徑,在系統(tǒng)上?查,傻了眼:

-bash-3.2$ echo$PATH

/usr/local/bin:/bin:/usr/bin:/in:/usr/in:/usr/X11R6/bin:/usr/java/j2re1.4.0/bin:/usr/atria/bin:/ccase/bin:/home/devcomp

第 1 頁(yè)

全是bin?錄,$PATH是運(yùn)?可執(zhí)??件時(shí)的搜索路徑,與include頭?件的搜索路徑?關(guān),可能不少?犯了我這樣的錯(cuò)誤。

頭?件:

1. #include“headfile.h”

搜索順序?yàn)椋?/p>

①先搜索當(dāng)前?錄

②然后搜索-I指定的?錄

③再搜索gcc的環(huán)境變量CPLUS_INCLUDE_PATH(C程序使?的是C_INCLUDE_PATH)

展開(kāi)全文

?

限免

導(dǎo)長(zhǎng)圖

轉(zhuǎn)存到網(wǎng)盤

發(fā)送至微信

下載文檔

北京百度網(wǎng)訊科技有限公司 版本號(hào)8.0.70

關(guān)于linux 動(dòng)態(tài)庫(kù) 當(dāng)前路徑的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營(yíng)銷公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站維護(hù),網(wǎng)絡(luò)營(yíng)銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽(yáng)、雅安、重慶、貴州、昆明、鄭州、湖北十堰機(jī)房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。


網(wǎng)頁(yè)題目:「如何在Linux中使用動(dòng)態(tài)庫(kù)并設(shè)置當(dāng)前路徑」 (linux 動(dòng)態(tài)庫(kù) 當(dāng)前路徑)
分享地址:http://m.5511xx.com/article/dhjdooi.html