簡體   English   中英

Nsight Eclipse無法找到共享庫

[英]Nsight Eclipse unable to find shared library

我正在使用NSight Eclipse創建一個類庫,這些類具有CUDA加速類,旨在由第三方應用程序進行擴展和使用。 我們稱我的項目為'foo'。 我想通過在一個單獨的項目中編寫第三方應用程序來測試foo,包括我的測試應用程序,然后運行它。 但是,當我這樣做時,測試應用程序無法找到foo共享庫文件。

我已經將測試項目的include路徑設置為我的foo的src目錄,測試應用程序正在請求正確的庫名稱,並且foo / Debug的路徑是正確的。 我的流程基於此帖子中的說明。

我已經驗證foo正在生成共享庫工件,並且檢查了-fPIC標志。

我可以編譯這兩個項目,所以看起來設置確實是正確的,但是當我實際嘗試運行測試項目時,我收到消息“加載共享庫時出錯:foo.so:無法打開共享對象文件:沒有這樣的文件或目錄“。 但是當我查看foo / Debug目錄時,我可以看到文件libfoo.so。

我已經嘗試將foo更改為靜態庫,但是會產生相同的錯誤消息。

發生了什么,我該怎么做才能解決它?

謝謝你的幫助。

Linux通常不會加載用戶創建的共享庫,除非該庫位於LD_LIBRARY_PATH環境變量中包含的路徑上。

將有問題的庫路徑添加到LD_LIBRARY_PATH環境變量中以解決此問題。

使用bash / sh你可以:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/my/library.so

此時,作為測試,從命令行運行程序。 它現在應該找到庫。

然后你可以啟動Nsight EE,它也應該找到它。

這沒有多大意義:

我已經嘗試將foo更改為靜態庫,但是會產生相同的錯誤消息。

永遠不會動態加載靜態庫,即使它位於“正確”路徑上。

不幸的是,更改LD_LIBRARY_PATH對問題沒有影響。 這可能會讓操作系統知道額外的位置,但不是NSight。

最終為我工作的是在項目的根目錄中添加一個符號鏈接到共享庫。 ln -s ~/path/to/foo.so foo.so和現在foo.so直接可用於我的項目,即使我以后重新編譯foo。

這仍然感覺有點像黑客,但至少我可以繼續發展......

我試圖修復同樣的問題。 在我的配置中,我的項目位於同一個工作區中,我試圖將它們全部鏈接到一個項目中。

我的解決方案是為每個項目添加參考。 那就是:Properties-> Paths and Symbols-> References選項卡

然后只需檢查工作空間中您需要的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM