前言
在编译openwrt最新node v12.16.1时,提示如下错误:
../src/node_util.cc: In function 'void node::util::Sleep(const v8::FunctionCallbackInfo<v8::Value>&)':
../src/node_util.cc:176:3: error: 'uv_sleep' was not declared in this scope
uv_sleep(msec);
^~~~~~~~
../src/node_util.cc:176:3: note: suggested alternative: 'uv_stop'
uv_sleep(msec);
^~~~~~~~
uv_stop
libnode.target.mk:227: recipe for target
报错原因分析
主要是openwrt中的node版本太新,而node依赖的libuv库比较旧,无uv_sleep()接口,导致编译报错。
解决方式
更新libuv库为1.34.0版本
在执行./scripts/feeds 更新及安装后,修改libuv库的Makefile文件。
Makefile路径:./feeds/packages/libs/libuv
将相关内容修改为:
PKG_NAME:=libuv
PKG_VERSION:=1.34.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://dist.libuv.org/dist/v$(PKG_VERSION)/
PKG_HASH:=a23cece721fe169c0fa8afa399abbbcb7015c6d8dc0dab6381cf5c8646378148
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
结束语
经过以上调整,node v12.16.1即可正常编译通过。
如果文章对您有帮助,欢迎移至上方按钮打赏博主;
你的下载地址失效了
新三路由器固件下载链接失效了,不能下载了