2013-05-31 109 views
1

庫我不能用我的。所以LD看不到我剛剛建立

[0] [[email protected] segfaulty]$ cat Makefile 
all: ishy_crashy.so main.c 
    gcc -L. -lishy_crashy -o crashy main.c 

ishy_crashy.so: libby.h libby.c 
    gcc -fPIC -shared -Wl,-soname,ishy_crashy -o ishy_crashy.so libby.c 
[0] [[email protected] segfaulty]$ make 
gcc -fPIC -shared -Wl,-soname,ishy_crashy -o ishy_crashy.so libby.c 
gcc -L. -lishy_crashy -o crashy main.c 
/usr/bin/ld: cannot find -lishy_crashy 
collect2: error: ld returned 1 exit status 
make: *** [all] Error 1 
[2] [[email protected] segfaulty]$ file ishy_crashy.so 
ishy_crashy.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x0bcbdf5d7d1b88222ee057c014c906cd9fdd859d, not stripped 
[0] [[email protected] segfaulty]$ echo $LD_LIBRARY_PATH 

[0] [[email protected] segfaulty]$ export LD_LIBRARY_PATH=.:`pwd`:/lib:/usr/lib:/usr/local/lib 
[0] [[email protected] segfaulty]$ make 
gcc -L. -lishy_crashy -o crashy main.c 
/usr/bin/ld: cannot find -lishy_crashy 
collect2: error: ld returned 1 exit status 
make: *** [all] Error 1 
[2] [[email protected] segfaulty]$ ls 
ishy_crashy.so libby.c libby.h main.c Makefile 
[0] [[email protected] segfaulty]$ echo $LD_LIBRARY_PATH 
.:/tmp/segfaulty:/lib:/usr/lib:/usr/local/lib 

What'm我缺少的鏈接?

回答

1

參數-lishy_crashy表示尋找libishy_crashy.solibishy_crashy.a。您在庫文件名中缺少lib前綴。

1

因爲庫的命名約定是使用前綴lib。標準工具知道,所以-lxyz尋找一個名爲libxyz.so/libxyz.a的庫。