編譯nw-node版本的插件 下載nwjs對應版本的nodejs 原始源碼目錄 yh@yh:~/addon$ tree . ├── addon.cc ├── binding.gyp ├── CppLib │ ├── mynumber.cpp │ └── mynumber.h ├── myobject ...
編譯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>
<script src=test.js></script>
</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