指定された名前を表示しません共有オブジェクトライブラリの構築:LDDは、私はDebianの上で共有オブジェクトライブラリを構築しようとしている
cat /etc/issue
Debian GNU/Linux 9 \n \l
私は(wrap.c
を作成するためのラッパーとして機能し、通常のように、ライブラリとオブジェクトを構築すべてのオブジェクトファイル)
gcc -c -fPIC -W -Wall -O2 -funroll-loops wrap.c
gcc -shared -Wl,-soname,libtest.so -o libtest.so *.o
mv libtest.so /usr/local/lib/ && mv test-header.h /usr/local/include/
私は、ライブラリに引っ張ると、次のように正常にコンパイルするtest.c
を作成します。
gcc test.c -ltest
ただし、次のエラーを返し./a.out
プログラム実行中:
./a.out: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory
が.so
を点検し、私は以下を参照してください
$ ldd /path/to/libtest.so
linux-vdso.so.1 (0x00007ffdb71c5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1c22fba000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1c23560000)
私も、少なくとも言うだろうlibtest.so => none
を、表示されません私はライブラリを見つけることができません。
ここで何が起こっているのか分かりません。
同じプロセス(gcc -dynamiclib -o libtest.dylib *.o
)でをmacOS
に作成すると、実行可能ファイルでライブラリを正常に呼び出すことができます。私はDebianで何が違うのか分かりません。
[-Wl、-rpath、/ usr/local/lib' –
@Mikke Kinghan Doh ....!私は実行可能ファイルではなく、ライブラリ上でlddを使用していると完全に脳を怒らせました。何らかの理由で、それが私を完全に捨てました。洞察力を賞賛してください! – floopy