0

我有一个名为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 添加到链接器参数中,它似乎可以找到它,但我不需要它,对吧?

4

1 回答 1

2

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

链接时您仍然需要使用这些-L选项。

于 2013-11-01T11:26:31.293 回答