2013-11-01 69 views
0

我有一個自定義庫,名爲libtaskres.so,我安裝在/usr/lib/procman。我的Makefile將我的計劃是這樣的:爲什麼ld無法找到我的共享庫?

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添加到鏈接器參數中,似乎可以找到它,但我不需要它,對吧?

回答

2

ld.so.conf文件(及其在ld.so.conf.d中的子配置)適用於運行時加載程序,而不是鏈接程序。

鏈接時仍需要使用-L選項。