arm64システムでarmhf実行可能ファイルを実行する方法は?


10

Ubuntu 16.04.2 LTSをarm64サーバーにインストールしました。

# uname -a
Linux test 4.9.23-std-1 #1 SMP Mon Apr 24 13:18:14 UTC 2017 aarch64 aarch64 aarch64 GNU/Linux

次のコマンドを実行して、armhfパッケージのインストールを有効にしました。

# dpkg --add-architecture armhf

次に、tracerouteパッケージをインストールしました。

# apt-get install traceroute:armhf
Reading package lists... Done
Building dependency tree
[...]
Preparing to unpack .../traceroute_1%3a2.0.21-1_armhf.deb ...
Unpacking traceroute:armhf (1:2.0.21-1) ...
Processing triggers for man-db (2.7.5-1) ...

ただし、実行可能ファイルを起動できません。

# traceroute
-bash: /usr/sbin/traceroute: cannot execute binary file: Exec format error

さらに詳しい情報:

# file /usr/bin/traceroute.db
/usr/bin/traceroute.db: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV),
    dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux
    2.6.32, BuildID[sha1]=0ebd0553e26b163dd848c131fe8ee0a4a2409109, stripped
# ldd /usr/bin/traceroute.db
        not a dynamic executable

また、インストールbinfmt-supportしてbinfmt_miscモジュールがロードされていることを確認してみました。

とのarm64下位互換性はありませんarmhfか?サーバーで実行armhf可能ファイルを実行するにはどうすればよいarm64ですか?


明らかに、すべての依存関係とインタプリタも32ビットである必要があります
You'reAGitForNotUsingGit

あなたはapt-get update; apt-get upgrade後に演奏しましたdpkg --add-architecture armhfか?
Marcos Silveira 2017年

@MarcosSilveiraはい、違いはありません。
Nathan Osman 2017年

回答:


16

arm32では、arm32サポートはオプションです。実際には、レガシーarm32命令セットのサポートを省略したarm64 CPUはCavium ThunderXのみです。カーネルバージョン文字列から、Scaleway armv8サーバーを使用しているようです。これが事実である場合、あなたは運が悪いです-Scaleway armv8サーバーはThunderXに基づいています。代わりにScaleway C1を使用します。これはネイティブarm32です。


2
いいでしょう、私はスケールウェイを使用しています。説明をありがとう。
Nathan Osman

1
パケットのタイプ2AサーバーもThunderXベースであり、この制限も適用されます。
vielmetti 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.