为什么ld无法找到我的共享库?

时间:2013-11-01 11:22:32

标签: gcc linker shared-libraries

我有一个名为 libtaskres.so 的自定义库,我在 / usr / lib / procman 中安装。我的Makefile构建我的程序:

gcc -c procman.c -o obj/procman.o
gcc -c procman_power.c -o obj/procman_power.o
gcc -c procman_sched.c -o obj/procman_sched.o
gcc obj/procman.o obj/procman_power.o obj/procman_sched.o -o procman -ltaskres

但只要我make,链接器就会返回以下错误:

/usr/bin/ld: cannot find -ltaskres
collect2: error: ld returned 1 exit status
make: *** [procman] Error 1

但是,我确实使用ldconfig

包含了我的图书馆
:$ cat /etc/ld.so.conf.d/procman.conf
/usr/lib/procman

:$ ls /usr/lib/procman/
total 24K
24K -rw-r--r-- 1 root root 21K 2013-Oct-31 15:06:14 libtaskres.so

我也查了一下:

:$ ldconfig -v | grep libtaskres
    libtaskres.so -> libtaskres.so

我做错了什么?如果我将-L / usr / lib / procman添加到链接器参数中,它似乎找到它,但我不应该需要它,对吧?

1 个答案:

答案 0 :(得分:2)

ld.so.conf文件(及其ld.so.conf.d中的子配置)用于运行时加载程序,而不是链接器。

链接时仍需要使用-L选项。