arm64 시스템에서 armhf 실행 파일을 실행하는 방법은 무엇입니까?


10

arm64 서버에 Ubuntu 16.04.2 LTS가 설치되어 있습니다.

# 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 비트
여야

당신은 apt-get update; apt-get upgrade후에 수행 dpkg --add-architecture armhf합니까?
Marcos Silveira

@MarcosSilveira 예, 차이가 없습니다.
Nathan Osman

답변:


16

arm32 지원은 arm64에서 선택적입니다. 실제로 레거시 arm32 명령어 세트 지원 (Cavium ThunderX)을 생략하는 arm64 CPU는 하나뿐입니다. 커널 버전 문자열에서 Scaleway armv8 서버를 사용하고있는 것 같습니다. 이 경우 운이 좋지 않습니다. Scaleway armv8 서버는 ThunderX를 기반으로합니다. 대신 기본 arm32 인 Scaleway C1을 사용하십시오.


2
좋은 생각입니다, 나는 Scaleway를 사용하고 있습니다. 설명해 주셔서 감사합니다.
Nathan Osman

1
패킷 유형 2A 서버도 ThunderX 기반이며이 제한 사항이 적용됩니다.
vielmetti 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.