記録のために、私は今日これに取り組んでほぼ6時間を費やしました。Stack Overflow / Superuserやその他のさまざまなメーリングリストでGoogleや他の同様の質問を使い果たしました。
次のアプリケーションを実行しようとしています。
# file ./ncsvc
./ncsvc: setuid setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped
# ls -la ncsvc
-rws--s--x 1 root root 1931688 Dec 19 20:41 ncsvc
Ubuntuの64ビットバージョンを実行しています。
# uname -m
x86_64
さて、過去の話で、このアプリケーションに必要なライブラリの詳細を以下に示します。
# readelf -a ./ncsvc | grep interpreter
[Requesting program interpreter: /lib/ld-linux.so.2]
# readelf -a ./ncsvc | grep NEEDED
0x00000001 (NEEDED) Shared library: [libdl.so.2]
0x00000001 (NEEDED) Shared library: [libz.so.1]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libc.so.6]
これは私が立ち往生しているところです:
# ls -la /lib/ld-linux.so.2
lrwxrwxrwx 1 root root 32 Dec 19 23:31 /lib/ld-linux.so.2 -> /lib/x86_64-linux-gnu/ld-2.15.so
# locate libdl.so.2
/lib/i386-linux-gnu/libdl.so.2
/lib/x86_64-linux-gnu/libdl.so.2
# locate libz.so.1
/lib/i386-linux-gnu/libz.so.1
/lib/i386-linux-gnu/libz.so.1.2.3.4
/lib/x86_64-linux-gnu/libz.so.1
/lib/x86_64-linux-gnu/libz.so.1.2.3.4
# locate libpthread.so.0
/lib/i386-linux-gnu/libpthread.so.0
/lib/x86_64-linux-gnu/libpthread.so.0
# locate libm.so.6
/lib/i386-linux-gnu/libm.so.6
/lib/x86_64-linux-gnu/libm.so.6
# locate libc.so.6
/lib/i386-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6
私が知る限り、動的リンカーと、それが実行する必要があるすべての共有ライブラリがあります(tl; dr:ia32-libs ISがインストールされています)。実行した場合を除き、このエラーが発生します。
# ./ncsvc
bash: ./ncsvc: cannot execute binary file
最後に、これが役立つことを意味するかどうかはわかりません。
# ldd -v ./ncsvc
not a dynamic executable
ソースコードにアクセスできますか?ちょうどそれを再構築...
—
MattDMo
それが前に明確でなかったならば、私にそれを綴らせてください。ソースにアクセスできません。所有権があり、所有者(Juniper)は64ビットバージョンをリリースしていません。ただし、64ビット環境で問題なく動作するようになった人もいます。
—
クリス・オーリン