1. 程式人生 > >讓linux載入當前目錄的動態庫

讓linux載入當前目錄的動態庫

 linux的excutable在執行的時候預設是先搜尋/lib和/usr/lib這兩個目錄,然後按照ld.so.conf裡面的配置搜尋絕 對路徑,linux預設是不會在當前目錄搜尋動態庫的。windows載入動態庫的時候,預設是首先載入本地目錄下的動態庫,然後再搜尋 windows/system和windows/system32目錄。

windows的動態庫搜尋順序,雖然有可能會造成潛在的混亂,但是對於開發和測試無疑是比較方便的,尤其是debug和release版本的動態 庫需要經常切換進行測試的時候。linux的動態庫搜尋順序雖然可以說成是比較嚴謹,但是相對來說也比較呆板,有時候會造成不便。

其實,linux也可以支援“載入當前目錄的動態庫”。只要設定合適的環境變數LD_LIBRARY_PATH就可以了。設定方法有以下三種: 1、臨時修改,log out之後就失效
在terminal中執行:export LD_LIBRARY_PATH=./ 2、讓當前帳號以後都優先載入當前目錄的動態庫
修改~/.bash_profile在檔案末尾加上兩行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH 3、讓所有帳號從此都優先載入當前目錄的動態庫
修改/etc/profile在檔案末尾加上兩行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH PS:修改ld.so.conf不能達到我們的目的,因為ld.so.conf只支援絕對路徑。 Tips: 用 ldd
命令 看一下你的應用程式連結了哪些動態庫。
===================================================
權威資料參考:
LD_LIBRARY_PATH 環境變數 [UNIX] -------------------------------------------------------------------------------- 語法 
LD_LIBRARY_PATH=installation_path/lib 說明 
LD_LIBRARY_PATH 環境變數僅在 UNIX 上使用。它由安裝程式修改為包括 Adaptive Server Anywhere 庫所在的目錄。 這些庫位於安裝目錄的 lib 子目錄中(例如,/opt/SYBSasa9/lib)。 在 Mac OS X 上使用的是 DYLD_LIBRARY_PATH 環境變數,而在 AIX 上使用的則是 LIBPATH 環境變數。

相關推薦

linux載入當前目錄動態

 linux的excutable在執行的時候預設是先搜尋/lib和/usr/lib這兩個目錄,然後按照ld.so.conf裡面的配置搜尋絕 對路徑,linux預設是不會在當前目錄搜尋動態庫的。windows載入動態庫的時候,預設是首先載入本地目錄下的動態庫,然後再搜尋 win

[Linux] 如何linux載入當前目錄動態

linux的excutable在執行的時候預設是先搜尋/lib和/usr/lib這兩個目錄,然後按照ld.so.conf裡面的配置搜尋絕對路徑,linux預設是不會在當前目錄搜尋動態庫的。windows載入動態庫的時候,預設是首先載入本地目錄下的動態庫,然後再搜尋window

ubuntu linux 載入當前目錄動態

linux的excutable在執行的時候預設是先搜尋/lib和/usr/lib這兩個目錄,然後按照ld.so.conf裡面的配置搜尋絕對路徑,linux預設是不會在當前目錄搜尋動態庫的。windows載入動態庫的時候,預設是首先載入本地目錄下的動態庫,然後再搜尋windows/system和windows/

linux載入當前目錄動態

linux的excutable在執行的時候預設是先搜尋/lib和/usr/lib這兩個目錄,然後按照ld.so.conf裡面的配置搜尋絕對路徑,linux預設是不會在當前目錄搜尋動態庫的。windows載入動態庫的時候,預設是首先載入本地目錄下的動態庫,然後再搜尋wind

linux當前目錄下執行程式

第一步:回到使用者的主目錄cd 第二步:編輯使用者配置檔案 ubuntu:.profile redhat: .bash_profile 在檔案最後一行輸入:export PATH=$PATH:.

Linux 當前目錄動態鏈接找不到問題【轉載】

exc 查看 log term 環境 ubunt 順序 lin win linux的excutable在執行的時候缺省是先搜索/lib和/usr/lib這兩個目錄,然後按照ld.so.conf裏面的配置搜索絕對路徑,linux缺省是不會在當前目錄搜索動態庫的。windows

linux檢視當前載入的所有動態

因為之前用的一個動態庫現在要換一個版本,所以就想看一下這個庫是否還在載入。 轉自:http://blog.csdn.net/leo115/article/details/7773887 在我們做Linux開發的時候,往往會出現 某些庫 can not found 的

Linux下如何解決動態的鏈接問題

gcc 動態庫 error while loading shared libraries 關於動態庫和靜態庫,這裏不多解釋,如何創建屬於自己的動態庫和靜態庫,之前有提過,詳細內容戳鏈接。 靜態庫是一種以空間換取時間和移植性的做法,一些情況下確實有著一定的意義,但是一些情況下,我們自己

Linux檢視當前目錄下檔案/目錄數量

1) 統計當前資料夾下檔案的個數: ls -l |grep "^-"|wc -l   2) 統計當前資料夾下目錄的個數: ls -l |grep "^d"|wc -l   3) 統計當前資料夾下檔案的個數,包括子資料夾裡的 : ls -lR|grep

Linux下C程式動態的生成和呼叫

Linux下C程式動態庫的生成和呼叫 文章目錄 Linux下C程式動態庫的生成和呼叫 1 動態庫的打包和呼叫 2 靜態庫打包和呼叫 3 常用命令 4 gcc 和 g++ 區別 5 編譯和連結的理解

linux查詢當前目錄下的所有檔案大小和清空檔案內容命令

  查詢當前目錄下的所有檔案大小:du -sh *  刪除檔案:rm - rf xxx.log 列印日誌:tail -f xxx.log 檢視程序ps -ef | grep java | grep -v grep 殺死客戶端kill -9 14569 - 啟動

Linux下怎麼建立動態和靜態

前言 linux下的生成的動態庫和靜態庫沒有windows下方便 linux下gcc編譯預設動態連結和release 程式執行後呼叫動態庫 動態庫: 程式在執行的時候才去連結動態庫的程式碼,多個程式

linux命令之檢視動態符號-nm

在呼叫動態庫的時候,經常出現由於動態庫介面修改或者版本不匹配導致呼叫動態庫找不到函式介面符號的情況。 原因可能有如下幾種: 1.由於c++動態庫編譯沒有加extern c導致函式編譯時加了c++的字首的; 2.系統中有多個庫,程式載入了其他路徑的庫; 3.庫的版本不對,老版

Linux FFmpeg 編譯so動態

   Linux平臺FFmpeg的編譯非常簡單:     1.獲取FFmpeg原始碼,下載或clone.        下載:        地址: http://ffmpeg.org/downloa

linux下製作一個動態

製作一個動態庫 我們可以使用gcc工具來製作一個動態庫 示例:自己製作一個動態庫,庫函式的功能是傳遞一個字串並輸出。 第一步:需要準備3個檔案:hello.h、hello.c、test.c。其中hello.h和hello.c用於製作動態庫,test.c是測試程式主函式 第

linux查詢當前目錄及子目錄下包含某字串

find . -name \*.cc -print0 -or -name \*.h -print0 | xargs -0 grep "hello". 解釋:查詢當前目錄下包含"hello"字串的.cc和.h檔案

linux當前目錄下根據檔名查詢檔案

find | grep luoluo 將當前目錄下(包括子目錄)的檔名中含有luoluo的檔案過濾出來 即使是當前目錄子目錄下的檔案,也能被找出來。 find | xargs grep luoluo 將當前目錄下(包括子目錄)的檔案內容中含有luoluo的行過濾

Linux下靜態、動態(隱式、顯式呼叫)的建立和使用及區別

顯式呼叫的動態庫的建立與隱式呼叫相同。(隱式呼叫與靜態庫的使用方法一樣,不需要包含匯出函式的標頭檔案(顯式呼叫也不用包含標頭檔案),只需要在編譯可執行程式時指定庫檔案的路徑)顯式呼叫和隱式呼叫的區別在於:編譯可執行程式時需要指定庫檔案的搜尋路徑,而顯式呼叫編譯可執行程式時不用加上動態庫的搜尋路徑(因為已經在主

Linux下.h與動態.so檔案的路徑新增及gcc編譯的記錄

使用場景 當你在程式中加入一個非gcc預設搜尋路徑上的一個.h標頭檔案時,會報錯“No such file”,當你的程式需要動態連結一個.so庫時,在預設路徑裡找不到該庫,也會報錯。那麼,如何解決這兩種問題呢? gcc編譯使用“-I”選項 當頭檔案非標

linux 設定執行時動態路徑

export LD_LIBRARY_PATH="/mnt/pub/libs/share:$LD_LIBRARY_PATH"   PATH和LD_LIBRARY_PATH本質都是變數,所謂變數的意思就是由別人賦值產生的,直覺往往會讓我們新增和減少這個變數本身的某些路徑