実行可能ファイルに独自のディレクトリからいくつかの共有ライブラリをロードさせようとしているので.
、rpath に追加することにしました。しかし、実行しようとすると、.so が見つかりません。readelf -d myexec の結果の重要な部分は次のとおりです。
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libtoload.so.1]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000f (RPATH) Library rpath: [$ORIGIN/.:.]
私のフォルダには以下が含まれています:
-rwxr-xr-x 1 root root 97148 Apr 3 12:10 libtoload.so.1
-rwxr-xr-x 1 root root 9873 Apr 3 10:10 myexec
エラー :
/some/folder/ # ./myexec
./myexec: error while loading shared libraries: libtoload.so.1: cannot open shared object file: No such file or directory
注:LD_LIBRARY_PATH環境変数へのアクセス権がなく(実際には存在しません)、他のライブラリは/ libフォルダーにあり、正常にロードされています(ただし、libtoload.so.1を配置できません)そこの。私は実際に別のコンピューターから実行可能ファイルをクロスコンパイルしていますが、ターゲットシステム上のいくつかのコマンドにしかアクセスできません(ツールチェーンはなく、ほとんどがビジーボックスコマンドです)。
編集: /lib/ld-linux.so.3 --library-path ./ ./myexec は機能します