运行平台:
OpenWrt
Linux tt 5.15.74 #0 SMP PREEMPT Wed Oct 19 17:45:08 2022 aarch64 GNU/Linux
cloudreve版本:
3.5.3
----------------------------------------------------------------- 官方下载的捐助版无法运行,信息如下
[root@tt:10:14 AM /usr/bin] # ldd /usr/bin/cloudreve
/lib/ld-linux-aarch64.so.1 (0xffffa75c8000)
libpthread.so.0 => /lib/ld-linux-aarch64.so.1 (0xffffa75c8000)
libdl.so.2 => /lib/ld-linux-aarch64.so.1 (0xffffa75c8000)
libc.so.6 => /lib/ld-linux-aarch64.so.1 (0xffffa75c8000)
Error loading shared library ld-linux-aarch64.so.1: No such file or directory (needed by /usr/bin/cloudreve)
Error relocating /usr/bin/cloudreve: __memcpy_chk: symbol not found
Error relocating /usr/bin/cloudreve: __vfprintf_chk: symbol not found
Error relocating /usr/bin/cloudreve: __memset_chk: symbol not found
Error relocating /usr/bin/cloudreve: __fprintf_chk: symbol not found
----------------------------------------------------------------- openwrt官方版本,可运行的
[root@tt:10:14 AM /usr/bin] # ldd /usr/bin/cloudreve
/lib/ld-musl-aarch64.so.1 (0xffffb8fd5000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xffffb8faf000)libc.so => /lib/ld-musl-aarch64.so.1 (0xffffb8fd5000)
疑问:
貌似官方的编译的环境与条件不相同
谁有 这个 OpenWrt Arm8(arm64) 的 `ld-linux-aarch64.so`, 这个文件,能否提供下
1条答案
按热度按时间c9qzyr3d1#
我也遇到一样的问题。必须手动重新编译。
原因是:openwrt 用的 musl实现的libc。无法和用linux标准link的release链接成功。
编译我是直接在路由器(quad core a72 + 4Gram)上编译也大概花了大半个小时。绝大多数情况应该要配置交叉编译环境。
且用go编译也会遇到musl实现的libc导致的问题,缺少 -lphread -ldl。
虽然musl里面已经自带了但是build还会按照linux标准去找libpthread libdl。
解决方案是需要手动创建空的 .a 来骗过linker
openwrt/packages#12642
之后就能编译成功且能运行。但是后续其他的地方有没有问题且不明(暂时发现macOS下finder的webdav似乎上传的文件全是0kb,不知道是不是不兼容导致)