64ビットUbuntuで32ビットの動的実行可能ファイルを実行できません


0

記録のために、私は今日これに取り組んでほぼ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ビット環境で問題なく動作するようになった人もいます。
クリス・オーリン

回答:


0

カーネルは32ビットエミュレーションのサポートに準拠していませんでした。再起動し、それに応じてカーネルを選択すると、この問題は解決しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.