2017-06-04 86 views
0

安裝共享庫,我不能安裝在Ubuntu this library,或至少編譯.cpp庫鏈接到它。我已經完成了Google和StackOverflow的所有答案。不可能與.so文件

好吧,首先我運行cmake,之後運行make(和make install可以肯定)。不過,如果我運行g++ xxx.cpp -lcrb -o test,則會出現此錯誤:fatal error: CRNB.h: No such file or directory。圖書館不喜歡被人還未安裝,所以我的libcrn.so文件複製到/usr/lib,我跑sudo ldconfig加載它。現在...

  • sudo ldconfig -n -v /usr/lib/說,它(不是複製.so文件之前)已正確安裝。
  • g++ -lcrn說,它的正確安裝,因爲回報undefined reference to 'main'而不是cannot find -lcrn(如複製.so文件之前)
  • ldd /bin/ls沒有列出庫,這意味着它沒有安裝

不管怎麼說,試圖編譯仍拋出相同的錯誤。我也曾嘗試...

  • ...創建一個.conf文件,並將其添加到文件夾/etc/ld.so.conf.d/
  • ...到creaty的.so文件的符號鏈接/usr/lib
  • .. 。重複這一切的解決方案也/usr/local/lib/lib文件夾
  • ......所有這一切的文件夾添加到/etc/ld.so.conf路徑
  • ...到LD_LIBRARY_PATH出口到T的路徑他.so檔案

和許多更相似。正如你可以看到所有這些都是一樣的,所以很顯然我失去了一些重要的東西。任何人都知道它可能是什麼?

非常感謝!

+0

'致命錯誤:CRNB.h:沒有這樣的文件或directory'意味着它無法找到**頭文件**'CRNB.h' 。在你的嘗試中,你從未嘗試過使用這個文件做些什麼。實際上,在'cmake' - 'make' - 'make install'後,安裝了庫**,但它安裝了*本地*,位於'install_3.9.5'子目錄下。因此,您可以使用庫,但需要提供適當的附加包含目錄(''I'gcc'標誌)和鏈接目錄('-L'標誌)。 – Tsyvarev

回答

1

您需要用「-I」標誌指定包含目錄,或將其導入到您的系統。

嘗試:

g++ src_name.cpp -L./your/library -lcrn -I./your/headers -o out_name -std=c++11 

或者:

您可以從libcrn複製包含文件( 「* .H」),以 「在/ usr /本地/包括/」 和庫「的/ usr/local/lib目錄/」如果它不存在,然後:

g++ src_name.cpp -lcrn -o out_name -std=c++11 
+0

我忘記將包含文件複製到/ usr/local/include。這樣它就可以和你的最後一條命令一起工作。謝謝! – Maximetinu