您尚未登录。

#1 2021-02-20 00:18:36

vvvbbbcz
会员
注册时间: 2021-02-19
帖子: 5
个人网站

如何让arm64的Archlinux运行armhf(32位)程序?

我用的是树莓派4b,安装了arch,装了个KDE,打算用vnc远程桌面。tigervnc没法用,只能用realvnc。我用yay安装完realvnc-vnc-server后,运行vncserver,提示无法运行,显示“cannot execute binary file: Exec format error”。起初我以为是amd64不兼容arm64,但我一想,树莓派官方系统不是可以用吗?而且原先下载的软件包带有arm后缀,是针对arm架构的。后来我仔细看了下,软件包是armhf的,也就是32位的。我本来在google上找解决方法,但找到的教程都是抄的,而且太老旧,压根不能用。然后我又冒着风险用dpkg安装,但又有依赖问题没法解决。

我已经用尽了我能想到的所有办法,求各位献策

离线

#2 2021-02-20 08:45:03

Ded_Secer
会员
注册时间: 2020-01-01
帖子: 10

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

用file看下vnserver的可执行文件

离线

#3 2021-02-20 09:03:56

布丁酱
Arch!Arch!Arch!
所在地: 成都
注册时间: 2020-07-27
帖子: 175
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

我记得我当时先写了个.vnc/xstartup,然后直接vncserver:0就搞定了,然后就是用realvnc或者tigervnc都能连了,但是性能较差,刷新速度较慢,我觉得当个小服务器用还行,跑桌面划不来


布丁酱是菜鸡,没毛病,他是菜鸡:)

离线

#4 2021-02-20 10:31:01

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 6,388
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

vvvbbbcz 说:

起初我以为是amd64不兼容arm64

是。

vvvbbbcz 说:

而且原先下载的软件包带有arm后缀

你 uname -a 看看?「带有arm后缀」是哪个后缀?4b 的 CPU 是 Cortex-A72,你不是装的 64 位系统吗?为什么不使用 aarch64 的包呢?

离线

#5 2021-02-20 12:06:28

vvvbbbcz
会员
注册时间: 2021-02-19
帖子: 5
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

依云 说:

为什么不使用 aarch64 的包呢?

realvnc没有提供aarch64的包,只提供了armhf的包,并且这个包在树莓派官方系统可以正常运行

离线

#6 2021-02-20 12:10:32

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 6,388
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

哦,我没看仔细。

那你把 uname -afile 你运行失败的文件 的结果发一下呀。

离线

#7 2021-02-20 15:34:41

vvvbbbcz
会员
注册时间: 2021-02-19
帖子: 5
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

依云 说:

哦,我没看仔细。

那你把 uname -afile 你运行失败的文件 的结果发一下呀。

uname -a:
Linux alarm 5.11.0-1-ARCH #1 SMP Wed Feb 17 18:45:38 MST 2021 aarch64 GNU/Linux

file /usr/bin/vncserver:
/usr/bin/vncserver: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=5fd1aaf47c0d4e11d4204d1569fca16fa3cfdcbb, stripped

离线

#8 2021-02-20 15:47:36

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 6,388
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

/lib/ld-linux-armhf.so.3 这个文件你有吗?

离线

#9 2021-02-21 19:01:42

vvvbbbcz
会员
注册时间: 2021-02-19
帖子: 5
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

依云 说:

/lib/ld-linux-armhf.so.3 这个文件你有吗?

我把ubuntu的这个文件复制过来了,然而一点用处都没

离线

#10 2021-02-21 19:19:22

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 6,388
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

vvvbbbcz 说:
依云 说:

/lib/ld-linux-armhf.so.3 这个文件你有吗?

我把ubuntu的这个文件复制过来了,然而一点用处都没

不止一个文件啊…………你没装32位的用户空间支持。

离线

#11 2021-02-21 20:25:44

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,236

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

yay?那这个包是从AUR编译上游源代码来的?这样为什么会是32位?还是说那个pkgbuild仅仅是打包了一下,用的是二进制的source


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#12 2021-02-21 21:54:11

vvvbbbcz
会员
注册时间: 2021-02-19
帖子: 5
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

依云 说:

不止一个文件啊…………你没装32位的用户空间支持。

但最大的问题是,我找不到任何armhf的运行库

离线

#13 2021-02-22 09:20:54

luxni
会员
注册时间: 2014-06-08
帖子: 220

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

你可以试下:

$ yay -Ss arm hf
archlinuxcn/rust-std-nightly-armv7-unknown-linux-gnueabihf 4:1.52.0_20210221-1 (21.0 MiB 86.9 MiB) 
    A safe, concurrent, practical language from Mozilla. (standard library, for nightly version, for (cross-)compiling to and running on armv7-unknown-linux-gnueabihf)
archlinuxcn/rust-std-nightly-arm-unknown-linux-gnueabihf 4:1.52.0_20210221-1 (20.8 MiB 85.7 MiB) 
    A safe, concurrent, practical language from Mozilla. (standard library, for nightly version, for (cross-)compiling to and running on arm-unknown-linux-gnueabihf)
archlinuxcn/arm-linux-gnueabihf-linux-api-headers 5.6.15-1 (1.0 MiB 4.4 MiB) 
    Kernel headers sanitized for use in userspace (arm-linux-gnueabihf)
archlinuxcn/arm-linux-gnueabihf-glibc 2.31-1 (12.3 MiB 79.1 MiB) 
    GNU C Library (arm-linux-gnueabihf)
archlinuxcn/arm-linux-gnueabihf-gcc-objc 9.1.0-2 (15.1 MiB 49.5 MiB) 
    Objective-C front-end for GCC (arm-linux-gnueabihf)
archlinuxcn/arm-linux-gnueabihf-gcc-libs 9.1.0-2 (9.0 MiB 46.7 MiB) 
    Runtime libraries shipped by GCC (arm-linux-gnueabihf)
archlinuxcn/arm-linux-gnueabihf-gcc-fortran 9.1.0-2 (8.0 MiB 26.2 MiB) 
    Fortran front-end for GCC (arm-linux-gnueabihf)
archlinuxcn/arm-linux-gnueabihf-gcc 9.1.0-2 (27.3 MiB 129.7 MiB) 
    The GNU Compiler Collection - C and C++ frontends (arm-linux-gnueabihf)
archlinuxcn/arm-linux-gnueabihf-binutils 2.34-3 (3.0 MiB 14.6 MiB) 
    A set of programs to assemble and manipulate binary and object files (arm-linux-gnueabihf)

看下版本,再安装就行了吧。

最近编辑记录 luxni (2021-02-22 09:26:37)


虽然人菜菜的,但也想做个有趣的人。

离线

#14 2021-02-22 09:22:17

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,236

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

看了一下,确实是二进制source,这个PKGBUILD在尝试从deb转换到pacman包格式。但是很怀疑楼主没有搞清楚AUR、yay是个什么东西:/

这个包确实不在Archlinux ARM官方仓库,如果从AUR安装则是这个
https://aur.archlinux.org/packages/realvnc-vnc-server/
看comments部分,2021-02-18 22:08就谈到了raspbian官方有一个AARCH64的deb包,http://archive.raspberrypi.org/debian/pool/main/r/realvnc-vnc/realvnc-vnc-server_6.7.2.43081_arm64.deb
楼主2021-02-20 00:18:36发帖前似乎没有看到这个comment,其yay安装realvnc-vnc-server时由于某种原因生产了32位ARM构架的包

考虑到AUR包参差不齐的质量以及它设计是为了Archlinux(仅支持x86-64)服务的,且楼主愿意且能够在自己的系统上使用dpkg(个人非常不喜欢,个人也不会尝试在一个pacman based的系统上安装dpkg,这太容易搞坏系统),
建议楼主尝试用dpkg安装这个raspbian官方的AARCH64的deb包,如果lib缺失也尽可能用Archlinux ARM官方仓库的64位包补齐

记得把以前yay安装的和dpkg安装的都卸载一下


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#15 2021-02-22 10:59:49

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 6,388
个人网站

Re: 如何让arm64的Archlinux运行armhf(32位)程序?

vvvbbbcz 说:
依云 说:

不止一个文件啊…………你没装32位的用户空间支持。

但最大的问题是,我找不到任何armhf的运行库

那可能就是 alarm 不支持了。

离线

页脚