编译nw-node版本的插件
下载nwjs对应版本的nodejs
原始源码目录
- yh@yh:~/addon$ tree
- .
- ├── addon.cc
- ├── binding.gyp
- ├── CppLib
- │ ├── mynumber.cpp
- │ └── mynumber.h
- ├── myobject.cc
- ├── myobject.h
- ├── package.json
- └── test.js
- 1 directory, 8 files
复制代码 配置环境
- #例如目标路径/home/yh/node/bin
- export PATH=$HOME/node/bin:$PATH
复制代码- #FQ前做好先下载好配置和编译时用的软件
- #需要安装c++编译环境
- #ubuntu20.04上需要安装python
- sudo apt install g++ gcc make python patchelf tree
复制代码 FQ然后开始配置编译环境
下载nw的插件编译工具
- #一定要加-g
- npm install -g nw-gyp
复制代码 编译所使用的c++库
- #编译c++库并将c++库移动到最上层
- cd CppLib && g++ -shared -fPIC -o libmynumber.so mynumber.cpp && mv libmynumber.so .. && cd ..
- #修改binding.gy文件中libraries的值为libmynumber.so的绝对路径
复制代码 编译NW0.60.0版本的node插件
- #需要FQ不然http://node-webkit.s3.amazonaws.com/v0.60.0/nw-headers-v0.60.0.tar.gz下不了
- #最后显示ok则成功,not ok表示失败,0.60.0为nw-js的版本
- nw-gyp configure --target=0.60.0
- nw-gyp rebuild --target=0.60.0
- #将编译好的插件移动到当前目录
- mv build/Release/addon.node .
复制代码 修改编译出的addon.node文件中所依赖的c++库 libmynumber.so的路径
- patchelf --replace-needed $PWD/libmynumber.so libmynumber.so addon.node
- patchelf --set-rpath "\$ORIGIN" addon.node
复制代码 运行ldd检查插件的库依赖
- ldd addon.node
- #结果如下
- linux-vdso.so.1 (0x00007fffac9c8000)
- libmynumber.so => /home/yh/addon/./libmynumber.so (0x00007fbfd6623000)
- libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fbfd6432000)
- libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbfd640f000)
- libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbfd621d000)
- libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbfd60ce000)
- /lib64/ld-linux-x86-64.so.2 (0x00007fbfd6633000)
- libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbfd60b3000)
复制代码 将addon.node、libnumber.so和test.js复制到nw的环境中测试
index.html
- <!DOCTYPE html>
- <html>
- <head>
- <title>Hello World!</title>
- </head>
- <body>
- <h1>Hello World!</h1>
-
- </body>
- </html>
复制代码 package.json
- {
- "name": "保密实力综合管理系统",
- "version": "0.1",
- "main": "index.html",
- "chromium-args":"--mixed-context",
- "webkit": {
- "page-cache": false
- },
- "window": {
- "show": true,
- "toolbar": true,
- "frame": true,
- "position": "center",
- "icon": "logo.png",
- "width": 600,
- "height": 400,
- "min_width": 600,
- "min_height": 400
- },
- "dependencies": {
- "nw-gyp": "^3.6.6"
- }
- }
复制代码 其他
用node测试addon.node模块- #在源代码目录删除或重命名build文件运行
- #编译addon.node
- npm install
- #运行node
- node ./test.js
- #输出结果
- 11
- 12
- 13
- 21
- 22
- 23
- 7
- 3
- 10
- 2.5
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |