2013-09-05 62 views
0

我在/ usr/local/lib中有libcommon.so,并且在我的程序中链接了这个库。/usr/bin/ld:找不到共享库

的gcc -o测试test_prog.c -L在/ usr/local/lib目录-llibcommon.so

,我已经试过这也

的gcc -o测试test_prog.c -L在/ usr/local/lib目录-llibcommon

它给

在/ usr /斌/劳工处:找不到-llibcommon.so
collect2:LD返回1个退出状态

它的存在:

$ locate libcommon.so 
/usr/local/lib/libcommon.so 
/usr/local/lib/libcommon.so.0 
/usr/local/lib/libcommon.so.0.1.0 
$ 

回答

6

当您使用-l,你只需指定'基本'库名称:

-lcommon 

这将在某个目录中追踪libcommon.so

你告诉编译器尝试找到liblibcommon.so.so(和liblibcommon.so),它可能不能......实际上,你不会问这个问题是否可以。

一些GNU计划修建图书馆libiberty.so(或同等学历),因此,使用该库链接与链接线:

-liberty 

(这是有趣的,GNU真的,而这是+liberty,但..你无法修复所有的东西)。当您链接libcommon.so

+0

我改变根据你的/ usr/local/lib目录/libcommon.so.0之后得到这个:看不懂的符号:无效操作 collect2:LD返回1个退出状态 – user2732944

+0

现在你有一个不同的问题。链接器找到该库,但无法理解其中的内容。我建议通过运行'file /usr/lib/libcommon.so/lib/libc.so'开始,并查看文件类型之间是否存在明显差异。您可能需要遵循符号链接(因此您可能必须在'file'命令行中指定不同的名称,如果存在很大差异,那么您可能安装了错误的文件 - 或者系统管理员可能已经完成了。 –

1

使用-lcommon开关导出LD_LIBRARY_PATH指向哪里你却把所以文件的目录。

出口LD_LIBRARY_PATH =/pathofdirectorywheresofilesarekept

0

尝试