2011-03-16 52 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