1
gcc 4.7.2

こんにちは、

apr (apache ポータブル ランタイム) ライブラリを使用する共有ライブラリを作成しようとしています。

ただし、次のことを行うと、次のようになります。

ldd libjq.so
linux-gate.so.1 =>  (0xf777b000)
libdl.so.2 => /lib/libdl.so.2 (0xf774b000)
libapr-1.so.0 => not found
libc.so.6 => /lib/libc.so.6 (0xf7599000)
/lib/ld-linux.so.2 (0x4be59000)

それを見つけることができません:

libapr-1.so.0 => not found

システムパス上にないように、ソースから apr をコンパイルしました。このプロジェクトで使用するツール フォルダーにインクルードとライブラリを配置しました。

私のディレクトリ構造は次のようになります。

projects/apr_queue/src/job_queue.c
projects/apr_queue/tools/lib/apr*
projects/apr_queue/tools/inc/apr*

オブジェクト ファイルをコンパイルして作成します。

cc -c -m32 -Wall -Wextra -g -I../tools/apr/inc job_queue.c -D_LARGEFILE64_SOURCE -o job_queue.o

そして、次のように共有ライブラリを作成します。

cc -m32 -shared -o libjq.so -L../tools/apr/lib -lapr-1 job_queue.o

リンクエラーやコンパイルエラーはありません。apr-l ライブラリが見つからないだけです。

私はここでステップを逃していますか?

ご提案いただきありがとうございます。

4

1 に答える 1

0

ディレクトリをリンカーに渡すと、ディレクトリrpathがランタイム ライブラリの検索パスに追加されます。

-Wl,-rpath,/path/tools/apr/lib

または、LD_LIBRARY_PATH環境変数を使用します。

$ LD_LIBRARY_PATH=/path/tools/apr/lib ldd myprog
于 2013-01-10T09:46:50.913 に答える