0

我在 /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
$
4

3 回答 3

8

使用 时-l,只需指定“基本”库名称:

-lcommon

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

您告诉编译器尝试查找liblibcommon.so.so(and liblibcommon.so),但它可能无法...确实,如果可以,您就不会问这个问题。

一些 GNU 程序构建了一个库libiberty.so(或其等价物),因此使用该库的链接行链接:

-liberty

(这很有趣;GNU 真的宁愿它是+liberty,但是......你不能解决所有问题)。

于 2013-09-05T15:02:58.303 回答
1

链接时使用-lcommon开关libcommon.so

于 2013-09-05T15:04:16.783 回答
0

尝试导出指向您保存 so 文件的目录的 LD_LIBRARY_PATH。

导出 LD_LIBRARY_PATH = /pathofdirectorywheresofilesarekept

于 2015-06-23T03:39:28.417 回答