嵌入式技术分享

Embedded Technology Sharing

编译node v12.16.1报uv_sleep(msec)错误的处理方法

前言

在编译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即可正常编译通过。

如果文章对您有帮助,欢迎移至上方按钮打赏博主;

点赞
  1. 随梦而飞说道:

    你的下载地址失效了

  2. 随梦而飞说道:

    新三路由器固件下载链接失效了,不能下载了

随梦而飞进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注