2011-03-16 51 views
14

我創建了一個.so文件,並把它的位置/opt/lib,當我嘗試編譯我的主要程序使用下面的命令添加此路徑後,這個現在LD_LIBRARY_PATH在/ usr /斌/勞工處:找不到

g++ -Wall -I/home/alwin/Development/Calculator/ main.cpp -lcalc -o calculator 

我得到以下錯誤:

/usr/bin/ld: cannot find -lcalc 
collect2: ld returned 1 exit status 

有人可以幫助我。這是我第一次嘗試創建共享庫。 我使用代碼塊創建共享庫IDE

回答

20

-L/opt/lib添加到您的編譯器參數中,這會使編譯器和鏈接器在該文件夾中搜索libcalc.so的路徑。

+0

哦,是我試過太多,我還是得到了同樣的錯誤:(請參閱以下 alwin @ alwin-laptop:〜/ Desktop/CPPTest $ g ++ -Wall -I/home/alwin/Development/Calculator/-L/opt/lib main.cpp -libcalc.so -o計算器 /usr/bin/ld:找不到-libcalc.so collect2:ld返回1退出狀態 – 2011-03-16 19:53:09

+2

@Jay它是-lcalc,而不是-libcalc.so – 2011-03-16 21:51:12

2

您需要添加-L/opt/lib以告訴ld查看共享對象。

+0

就像我在以前的評論已經提到的,我沒加-L /選擇/ lib目錄中還有什麼事,我很想念:( – 2011-03-16 19:56:57

2

@Alwin Doss 您應該在-l之前提供-L選項。你可能會做相反的事情。試試這個:)

2

當你撥打電話與gcc應該說

g++ -Wall -I/home/alwin/Development/Calculator/ -L/opt/lib main.cpp -lcalc -o calculator 

not -libcalc.so 

我有自動生成也有類似的問題。

您可以創建從編譯目錄到庫目錄的軟鏈接。 然後庫變成「本地」。

cd /compile/directory 

ln -s /path/to/libcalc.so libcalc.so