我在/ usr / local / lib中有libcommon.so,我正在程序中链接这个库。
gcc -o test test_prog.c -L / usr / local / lib -llibcommon.so
我也试过这个
gcc -o test test_prog.c -L / usr / local / lib -llibcommon
它正在给予
/ usr / bin / ld:找不到-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
$
答案 0 :(得分:7)
使用-l
时,只需指定“基本”库名称:
-lcommon
这将在某个目录中追踪libcommon.so
。
你告诉编译器试图找到liblibcommon.so.so
(和liblibcommon.so
)并且它可能不会......实际上,你不会问这个问题是否可以。
一些GNU程序构建了一个库libiberty.so
(或其等价物),因此链接行使用库链接:
-liberty
(这很有趣; GNU真的宁愿它是+liberty
,但是......你无法解决所有问题。)
答案 1 :(得分:1)
链接-lcommon
libcommon.so
开关
答案 2 :(得分:0)
尝试导出LD_LIBRARY_PATH,指向您保存so文件的目录。
export LD_LIBRARY_PATH = / pathofdirectorywheresofilesarekept