1

.so とリンクできません

[0] [ishpeck@yoshimitsu 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] [ishpeck@yoshimitsu 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] [ishpeck@yoshimitsu 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] [ishpeck@yoshimitsu segfaulty]$ echo $LD_LIBRARY_PATH

[0] [ishpeck@yoshimitsu segfaulty]$ export LD_LIBRARY_PATH=.:`pwd`:/lib:/usr/lib:/usr/local/lib
[0] [ishpeck@yoshimitsu 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] [ishpeck@yoshimitsu segfaulty]$ ls
ishy_crashy.so  libby.c  libby.h  main.c  Makefile
[0] [ishpeck@yoshimitsu segfaulty]$ echo $LD_LIBRARY_PATH
.:/tmp/segfaulty:/lib:/usr/lib:/usr/local/lib

何が足りないの?

4

2 に答える 2

1

ライブラリの命名規則は接頭辞lib. 標準ツールはそれを理解しているので、/-lxyzというライブラリを探します。libxyz.solibxyz.a

于 2013-05-31T15:15:56.873 に答える
1

引数は、または-lishy_crashyを探すことを意味します。ライブラリ ファイル名にプレフィックスがありません。libishy_crashy.solibishy_crashy.alib

于 2013-05-31T15:16:09.240 に答える