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

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

新聞中心

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

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

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

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

一、動態(tài)庫的介紹

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

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

二、使用動態(tài)庫

在程序中使用動態(tài)庫需要使用到動態(tài)鏈接庫(ld)。在編譯時,需要使用-l選項指定動態(tài)庫的名字,編譯器會在默認的庫路徑下查找這個庫,并鏈接到程序中。

例如:

gcc -o myapp myapp.c -lm

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

如果動態(tài)庫不在默認的庫路徑下,可以使用-L選項指定動態(tài)庫的搜索路徑。

例如:

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

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

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

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

在Linux中,可以使用LD_LIBRARY_PATH環(huán)境變量來設(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)前路徑添加到默認的搜索路徑之前。

四、

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

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

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

linux編譯的c++程序位置

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

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

前以為系統(tǒng)默認路徑是環(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是運?可執(zhí)??件時的搜索路徑,與include頭?件的搜索路徑?關(guān),可能不少?犯了我這樣的錯誤。

頭?件:

1. #include“headfile.h”

搜索順序為:

①先搜索當(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

各?錄存在相同?件時,先找到哪個使?哪個。

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

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

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

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

-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++時,指定了prefix,那么內(nèi)定搜索?錄就是:

Prefix/include

Prefix/local/include

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

編譯時可以通過-nostdinc++選項屏蔽對內(nèi)定?錄搜索頭?件。

庫?件:

編譯的時候:

①gcc會去找-L

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

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

運?時動態(tài)庫的搜索路徑:

動態(tài)庫的搜索路徑搜索的先后順序是:

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

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

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

④默認的動態(tài)庫搜索路徑/lib;

⑤默認的動態(tài)庫搜索路徑/usr/lib。

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

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

立即獲取

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

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

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

前以為系統(tǒng)默認路徑是環(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 頁

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

頭?件:

1. #include“headfile.h”

搜索順序為:

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

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

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

展開全文

?

限免

導(dǎo)長圖

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

發(fā)送至微信

下載文檔

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

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

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


當(dāng)前文章:「如何在Linux中使用動態(tài)庫并設(shè)置當(dāng)前路徑」 (linux 動態(tài)庫 當(dāng)前路徑)
文章出自:http://www.5511xx.com/article/dhjdooi.html