Rasbianを実行しているRaspberry PiでStarboundサーバーを実行したいです。
サーバーはx86アーキテクチャで実行するように構築されているので、私の目標はx86アーキテクチャをエミュレートしてサーバーを実行することです。
編集:box86は64ビットx86バイナリを実行しません。
そのためにボックス86。
x86プログラムを実行できます(steamcmdはサーバーをダウンロードできるプログラムです)。ただし、サーバーを実行するとbash: ./program: cannot execute binary file: Exec format error
box86がx86プログラムに会ったらエミュレートする必要があるため、これは奇妙です。
Qemuを使用してサーバーをシミュレートしようとしています。
sudo apt install qemu-user qemu-system qemu
sudo qemu-x86_64 starbound_server
~につながる
/lib64/ld-linux-x86-64.so.2: No such file or directory
一部の動的ライブラリが欠落しているようです。私はこのライブラリがqemuに付属すると思ったので、パラメータを使用して別のldファイルを指定してみ
ました。-L
ところで、プログラムは/lib64フォルダだけを見ているようです。
私の最後の試みは、x86システムのlibファイルを使ってこのフォルダを作成することでした。ただし、これは次のような結果につながります。
ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
この問題を解決するために、人々は/etc/ld.so.preload
への参照を削除するように変更を提案しましたが、libarmmem
ファイルはRasbianシステムには存在しません。
x86プログラムをエミュレートするより良い方法があるかどうか疑問に思います。
そうでない場合は、/lib64フォルダを埋めるのに適したライブラリをどこで見つけることができますか?
readelfから得られた情報は次のとおりです。
machine: Advanced Micro Devices X86-64
type: EXEC
class: ELF64
共有ライブラリ
[libpthread.so.0]
[libdl.so.2]
librt.so.1]
[libm.so.6]
[libc.so.6]
[ld-linux-x86-64.so.2]
ベストアンサー1
コメントいただいたStephen Kittに感謝します。
使用chroot
とこのチュートリアル問題を解決しました。
64ビットDebianを使用してディレクトリを作成します。
apt install binutils debootstrap
mkdir my-directory
debootstrap --arch amd64 stretch my-directory http://deb.debian.org/debian
qemu
次に環境にインストールします。
chroot my-directory
apt install qemu qemu-system
その後、いつでもプログラムを実行します。
chroot my-directory
qemu-x86_64 my_x86_programm