0.序
本人在arm的Linux系统上serialport耗时5天,现在想想都头皮发麻!
下面我简单说一下过程,由于error时没有截图留档,关于出现的error,我就用语言描述一下,要是有什么不理解可以给我留言哈~~当然本文要有错误请严厉批评!
1.我的node是v12.18.3版本
2.系统里必须要有python2.xx,不能是python3.xx
3.一定要有gcc编译器呀!!(没有也要想办法搞出来,node-gyp必须要这东西)
1.全局安装node-gyp
npm install node-gyp -g
装这个node-gyp是为了编译重建bindings.node,说这个可能早了,但是全局装node-gyp是必须的,那为了使用它指令,我们还必须建立软连接
sudo ln -s ~/node/node-v12/bin/node-gyp /usr/bin/node-gyp
现在软连接建立完毕,可以在全局的任何个地方使用node-gyp rebuild 。
我们检查一下~/node/node-v12/lib/node_modules/node-gyp/gyp/pylib/gyp中是否有filecmp.py(我到git上看node-gyp源码,没有提供这py文件),如果没有,就根据你系统内的python版本,将python文件夹下lib里的filecmp.py复制到上面提到的文件夹下,缺少这个filecmp.py会报错
!!!报错:找不到filecmp.py~~~~balabalah
2.设置系统时间
这一步非常重要,系统时间不正确,node-gyp rebuild的时候会出现可怕的秒数倒计时
date //查看系统时间
date -s "2019-7-9 10:00:00" //设置系统时间
hwclock -w //写入硬件系统(非常关键,因为忽略这一步耗费我一天)
hwclock //查看系统时间,确保正确
snyc //同步一下
3.安装serialport
这一步也是让我迷醉得花里胡哨,我到现在觉得能装上也是巧合。
根据其提供文档,我们在需要安装serialport的文件夹下使用以下指令(必须这么输,默认你有package.json了):
sudo npm install serialport --unsafe-perm --build-from-source
如果安装上了那就大大大大幸
如果出现了报错
!!!报错:找不到filecmp.py~~~~balabalah
我们先npm uninstall serialport
然后重装npm(我是这样弄出来的,比较玄学)
sudo npm cache clean -f
sudo npm install npm -g
再执行
sudo npm install serialport --unsafe-perm --build-from-source
4.node-gyp rebuild
node-gyp rebuild会产生一个build文件夹,里面有Release等文件夹,Release中有bindings.node(上面提到),这个是serialport必须要用的
我们进到~/port/node_modules/@serialport/bindings里面应该有一个binding.gyp文件,这是node-gyp rebuild必须有的(npm上有说),在该文件夹下执行
node-gyp rebuild
好,此时应该生成了bindings.node文件,现在去新建一个js文件,require这个模块,并console.log,若执行则成功。
5.血泪史
1.系统时间没有设置,导致wating了很久
2.没有filecmp.py
3.重复装卸serialport
4.没有gcc编译器,node-gyp rebuild执行不了