pi@raspberrypi ~ $ sudo node-gyp rebuild
gyp info it worked if it ends with ok
gyp info using node-gyp@1.0.2
gyp info using node@0.10.31 | linux | arm
gyp info spawn python
gyp info spawn args [ '/usr/local/lib/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/home/pi/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/usr/local/lib/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/root/.node-gyp/0.10.31/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/root/.node-gyp/0.10.31',
gyp info spawn args '-Dmodule_root_dir=/home/pi',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.' ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/pi/build'
make: *** No rule to make target 'Release/obj.target/binding/src/binding.o', needed by 'Release/obj.target/binding.node'. Stop.
make: Leaving directory '/home/pi/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:810:12)
gyp ERR! System Linux 3.12.22+
gyp ERR! command "node" "/usr/local/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/pi
gyp ERR! node -v v0.10.31
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok
这是我的错误代码。
binding.gyp
{
"targets": [
{
"target_name": "binding",
"sources": ["src/binding.cc"]
}
]
}
我安装了'npm make‘,我安装了'sudo apt-get install python-dev’,然后可能安装了python2.7,我安装了'sudo apt-get install gcc‘,我不明白
make: Entering directory '/home/pi/build'
make: *** No rule to make target 'Release/obj.target/binding/src/binding.o', needed by 'Release/obj.target/binding.node'. Stop.
make: Leaving directory '/home/pi/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
这句话是什么意思?为什么我做不到呢?
发布于 2014-09-12 22:39:33
您确定路径src/binding.cc
存在吗?听起来像是目录或文件名有误。
发布于 2021-03-24 00:48:09
Node-Gyp自述文档对binding.gyp
的使用不是很明确。
了解节点-Gyp配置binding.gyp
NODE-GYP不知道您的代码结构
node-gyp
只是一个为nodejs构建任何原生插件包的包,但它并不与任何包捆绑在一起,因此他们的示例是通用的,并且缺乏与包一起使用的细节。
当您收到错误时:
make: *** No rule to make target Release/obj.target/binding/src/binding.o', needed by Release/binding.node'. Stop
这是因为您使用了他们的通用模板来使其工作。但是绑定Gyp不是用于他们自己的内部配置,而是用于包模块配置。
因此,与其绑定关键字,不如在实际模块.cc
文件中包含实际模块路径,如下所示:
{
"targets": [
{
"target_name": "my-subproject-name",
"sources": [
"node_modules/my-subproject-dir/cc/test.cc",
"node_modules/my-subproject-dir/cc/any-other-cc-file.cc"
]
}
]
}
如果你的项目中只有一个或几个文件需要编译,那么这将是完全有效的。
在构建包代码时,您不需要自己配置binding.gyp,因为包自带了自己的node_modules/package-name/binding.gyp
,以及一个构建和发布目录,其中包含要与node_modules/package-name/build/Release
中的node-gyp构建一起使用的文件,其中包含.o
和o.d
文件,以告诉node-gyp如何使用以及如何构建包。
转到模块目录:
cd node_modules/package-name
node-gyp build
# or execute a js file if any provided like
node ./install/install.js
因此,您甚至不必使用:node-gyp configure
,只需使用node-gyp build
即可。有时它会在安装后自动构建软件包,如果这会导致错误,那么看看您是否可以停止使用环境变量或Config自动构建,并转到目录手动完成。或者在包问题中寻找可能性。
在此过程中,您可能会在控制台中看到许多打印的警告,但请不要担心。如果该过程成功,则将创建构建的节点文件:
node_modules/package-name/build/Release/package-name.node
https://stackoverflow.com/questions/25810453
复制相似问题