这个问题一般出现在比较老旧的openwrt系统安装新版软件包的时候,原因在于openwrt所用的musl C库在1.2.0版本之后加入了64位的时间函数,在此之后发布的软件包都采用了64位的时间函数。而如果你的openwrt系统比较老,其上的musl库版本可能在1.2.0之前,就无法为软件提供所需要的函数,这也是所有报错都是以time64为结尾的函数名的原因。
方案一是安装旧版本的软件,但这个方法无法一劳永逸解决问题,而且安装旧版本比较麻烦,也容易出问题,因此不过多讨论。
方案二就是更新系统中的C库了,但我们不能像更新软件包一样用opkg更新,需要手动替换掉musl的动态运行库。如果你的路由器是mips指令集(注意是大端序,和mipsel不一样),你可以直接下载我编译好的.so文件(链接放在最后),否则只能下载musl的源码自行编译,版本可任意选择,只要在1.2.0及之后即可。
编译之后我们只需要libc.so文件,将其复制到路由器的/lib目录下即可,记住一定是直接复制进行覆盖!切忌删除原来的/lib/libc.so后再复制!!否则系统会直接崩溃!
复制完成后,新装的软件应该就能正常运行了。
libc.so(mips指令集)下载地址:libc.so 提取码:nuna