Cloudreve openwrt , 捐助版无法运行 (arm64),如何解决

wz3gfoph  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(343)

运行平台:
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`, 这个文件,能否提供下
c9qzyr3d

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

ar -rc /usr/lib/libpthread.a

之后就能编译成功且能运行。但是后续其他的地方有没有问题且不明(暂时发现macOS下finder的webdav似乎上传的文件全是0kb,不知道是不是不兼容导致)

相关问题