1. 程式人生 > >linux找不到動態連結庫 .so檔案的解決方法

linux找不到動態連結庫 .so檔案的解決方法

如果使用自己手動生成的動態連結庫.so檔案,但是這個.so檔案,沒有加入庫檔案搜尋路勁中,程式執行時可能會出現找不到動態連結庫的情形。

可以通過ldd命名來檢視可執行檔案依賴的動態連結庫,如下(其中D為可執行程式):

 其中的libjson_linux-gcc-4.6_libmt.so cannot found。

解決這個問題:

 (1)在系統中查詢這個檔案(當然要保證系統中已經有這個.so檔案,只是查詢路徑沒有設定正確而已):

  sudo find / -name libjson_linux-gcc-4.6_libmt.so

結果:/home/liu/Desktop/jsoncpp-src-0.5.0/libs/linux-gcc-4.6/libjson_linux-gcc-4.6_libmt.so

(2)將.so檔案路徑的目錄新增到/etc/ld.so.conf

   sudo vim /etc/ld.so.conf

檔案末尾新新增一行,/home/liu/Desktop/jsoncpp-src-0.5.0/libs/linux-gcc-4.6

(3)使得修改生效

  sudo /sbin/ldconfig

這樣就不會有那個找不對.so檔案的錯誤啦。

參考:http://www.blogjava.net/zhyiwww/archive/2007/12/14/167827.html

相關推薦

linux下檢視動態連結so檔案的依賴的相關組建

  我們很多c程式在windows下是以dll形式展現的,在linux則是以so 形式展現的。   windows一般不會因為編譯dll檔案的編譯器版本不同而出先dll檔案不能執行。   但是linux下,不同版本核心的linux下編譯的c程式,在其他版本的linux下就容易

linux下檢視動態連結so檔案的依賴的相關元件

  我們很多c程式在windows下是以dll形式展現的,在linux則是以so 形式展現的。   windows一般不會因為編譯dll檔案的編譯器版本不同而出先dll檔案不能執行。   但是linux下,不同版本核心的linux下編譯的c程式,在其他版本的linux下就容易出現無法執行的問題。主要可能是支

linux下生成動態連結so檔案

怎樣在linux下生成動態連結庫即.so檔案? 一、 首先需要一個好的編譯工具,直接用gcc命令列編譯已經不再是一個明智之舉了,一個好的帶編譯工具的環境是很重要的,我選擇的是easyeclipse,它集成了CDT,可以很方便地編寫C和C++程式,它自動集成了gcc編譯器

linux動態連結 .so檔案解決方法

如果使用自己手動生成的動態連結庫.so檔案,但是這個.so檔案,沒有加入庫檔案搜尋路勁中,程式執行時可能會出現找不到動態連結庫的情形。 可以通過ldd命名來檢視可執行檔案依賴的動態連結庫,如下(其中D為可執行程式):  其中的libjson_linux-gcc-4.6_libmt.so cannot

linux下gcc編譯 .c檔案生成動態連結 .so檔案,並測試呼叫該連結

簡單介紹:linux中so檔案為共享庫,和windows下dll相似;so可以共多個程序呼叫,不同程序呼叫同一個so檔案,所使用so檔案不同;so原檔案不需要main函式;例項,1.通過mysqlTest.c中的函式mysql(),生成一個libmysql.so連結庫#inc

Linux動態連結 so檔案的建立與使用

1. 介紹         使用GNU的工具我們如何在Linux下建立自己的程式函式庫?一個“程式函式庫”簡單的說就是一個檔案包含了一些編譯好的程式碼和資料,這些編譯好的程式碼和資料可以在事後供其他的程式使用。程式函式庫可以使整個程

Linux下如何檢視動態連結so檔案的依賴

最近專案用到了opencv,在測試環境編譯後生成了so檔案,在測試環境執行正常後準備在預發環境進行上線前的測試 但是System.loadLibrary(Core.NATIVE_LIBRARY_NAM

Linux下gcc編譯生成動態連結*.so檔案並呼叫它

動態庫*.so在linux下用c和c++程式設計時經常會碰到,最近在網站找了幾篇文章介紹動態庫的編譯和連結,總算搞懂了這個之前一直不太瞭解得東東,這裡做個筆記,也為其它正為動態庫連結庫而苦惱的兄弟們提供一點幫助。1、動態庫的編譯下面通過一個例子來介紹如何生成一個動態庫。這裡

JAVA呼叫動態連結so檔案

最近專案在用到openjdk1.8時,出現以下異常,綜其原因是JDK1.8中libjavajpeg.so估計缺少某些函式。 記錄一下,這裡有一篇關於動態連結庫的文章,比較不錯,轉載推薦一下:http://www.cnblogs.com/duanxz/p/3651347.html Exception in t

QT生成動態連結.so檔案

首先是新建一個工程,選擇C++庫,開啟後是這樣的: 然後輸入新建的名稱,下一步,記得勾選Qtcore那個(就是預設的那個),否則編譯似乎不能通過。因為後面自動生成的.h檔案裡還有這個。 自動生成的有4個檔案一個pro,一個cpp,一個XXX.h檔案,一個XXX_g

ROS程式設計中如何配置CMakelists.txt來呼叫外部的動態連結(.so檔案)

在ubuntu下對ROS進行程式設計很經常的會用到動態連結庫的呼叫,而ROS中的編譯系統為catkin_make,和常規的CMake略有不同,具體不同點可參考這篇部落格(點選開啟連結),這就需要正確配置CMakelists.txt檔案,以便編譯系統找到你引用的庫和標頭檔案。

GCC編譯生成動態連結*.so檔案

動態庫*.so在linux下用c和c++程式設計時經常會碰到,最近在網站找了幾篇文章介紹動態庫的編譯和連結,總算搞懂了這個之前一直不太瞭解得東東,這裡做個筆記,也為其它正為動態庫連結庫而苦惱的兄弟們提供一點幫助。 1、動態庫的編譯 下面通過一個例子來介紹如何生成一個動態庫。

動態連結so檔案中的函式名隱藏

     在我們提供給別人使用的動態連結庫so檔案時,其內部實現函式的名稱,特別是一些關鍵名稱我們是不希望別人見到然後反向的,這時候一般有兩種處理方式:一是把程式中關鍵詞修改了再編譯,比較蠢笨;二是通過編譯的方式將字符隱藏,gcc編譯器提供了這個選項,即在編譯選項中加入-f

KERNEL32.dll動態連結報錯解決方法

 在Windows XP安裝遊戲或一些程式時,如百度雲管理等軟體面向Windows 7高版本的系統,對Windows XP相容性不那麼注重了,會出現錯誤提示:“定位程式輸入點GetlogicalprocessorInformation於動態連結庫KERNEL32.dll上”,這不是.net沒有安裝導致,而

MFC程式動態連結缺失的解決方法

      我們在用VS2010編寫MFC程式的時候,我們有時候會發現自己寫的程式在別人的電腦上執行時會報錯,說是動態連結庫的丟失.比如說“缺少mfc100d.dll檔案”。解決方法如下:    1:點選VS2010的專案->屬性->配置屬性->常規;

Xcode到.h或者.m檔案解決方法

× 出現這個問題會特別蛋疼,明明存在該檔案,但是一直報錯。這裡總結一下,希望對各位開發有用。 解決

linux 把靜態連結.a連結動態連結.so

個人分類: linux編譯連結         最近公司的專案中突然出現了這樣一個需求,我簡化再概括後如下:有兩大模組,其中一個模組a最終編譯出一個可執行檔案exec_a,另一個模組b編譯出一個動態連結庫lib_b.so被模組a的程式exec_a所連結。現在模組b中分出

Linux下執行時呼叫動態連結.so的三種方法(筆記)

在/etc/ld.so.conf.d/下建立xxx.conf,在文字中加入.so所在路徑,如:/usr/xxx等等,然後使用相應ldconfig命令使之生效。 將.so所在路徑新增為LD_LIBRARY_PATH環境變數。 在編譯命令中使用-Wl,-rpath

Linux下c++呼叫自己編寫的matlab函式:通過mcc動態連結.so實現

之前在這裡和這裡呼叫了matlab自帶的一些函式,是通過matlab引擎來實現的。那裡呼叫的是matlab自帶的函式,那麼如果想呼叫自己寫的.m函式該怎麼辦呢?其實很簡單,原理類似,方法也不止一種。這篇筆記我先嚐試通過mcc將.m函式編譯成動態連結庫供c++呼叫的方式。在另

【Android】動態連結so的載入原理

前言 最近開發的元件時常出現了執行時載入so庫失敗問題,每天都會有java.lang.UnsatisfiedLinkError的錯誤爆出來,而且線上總是偶然復現,很疑惑。所以本文將從AOSP原始碼簡單跟蹤Android中的動態連結庫so的載入原理,試圖找出一絲線索。 載入入口