2014-05-12 49 views
3

我編譯了casablanca並已將-l:/~/path/to/lib/libcasablanca.so放入我的CMakeList.txt中。我已經構建了我的應用程序,並且沒有任何錯誤。但是,當我運行可執行文件,它說:Linux:可執行文件找不到共享庫

./myproj: error while loading shared libraries: libcasablanca.so: cannot open shared object file: No such file or directory 

我已經做了另一臺計算機上,它似乎很好地工作。

有誰知道這是什麼問題?如何解決這個問題?

我沒有管理員訪問這臺機器。

回答

4

這很簡單:您的庫不在它們的默認系統路徑中,導入共享庫。編譯期間,編譯腳本解決了這些問題。 Inr沒有時間,你有LD_PRELOADLD_LIBRARY_PATH環境變量。

例如:一個export LD_LIBRARY_PATH=/home/darkside/wunderprog/lib將擴展directoried搜索您的庫與指定的目錄。如果有你的libcasablanca.so,你會得到你想要的。

通常我在我的專用帳戶中使用/home/<myusername>/lib目錄,並從.profile設置LD_LIBRARY_PATH

+0

如果我執行'export LD_LIBRARY_PATH = /〜/ path/to/lib',它是否會刪除變量中存在的值?或者什麼都沒有? –

+0

@thedarksideofthemoon是的,但通常它是空的(系統共享庫搜索路徑不存在)。如果你在那裏有一些重要的東西,你可以給他一個以冒號分隔的路徑列表,就像我們在'$ PATH'中看到的那樣:'export LD_LIBRARY_PATH =/home/darkmoon/lib:/ home/darkmoon/some_another/lib'。或者就這樣。 – peterh