1 安裝 buffertools
因為使用mjpeg-proxy的關係,需要編譯buffertools中的C++程式碼檔案,怎奈何一直出錯。
make: Entering directory `/srv/node/SparkCore-WebApp/node_modules/buffertools/build' CXX(target) Release/obj.target/buffertools/buffertools.o ../buffertools.cc: In member function ‘v8::Local<v8::Value><unnamed>::UnaryAction<Derived>::operator()(const v8::FunctionCallbackInfo<v8::Value>&)’: ../buffertools.cc:127: error: ‘EscapableHandleScope’ is not a member of ‘v8’ ../buffertools.cc:127: error: expected ‘;’ before ‘handle_scope’ ../buffertools.cc:138: error: ‘class v8::Isolate’ has no member named ‘ThrowException’ ../buffertools.cc:143: error: ‘handle_scope’ was not declared in this scope ../buffertools.cc: In member function ‘v8::Local<v8::Value><unnamed>::BinaryAction<Derived>::operator()(const v8::FunctionCallbackInfo<v8::Value>&)’: ../buffertools.cc:155: error: ‘EscapableHandleScope’ is not a member of ‘v8’ ../buffertools.cc:155: error: expected ‘;’ before ‘handle_scope’ ../buffertools.cc:166: error: ‘class v8::Isolate’ has no member named ‘ThrowException’ ../buffertools.cc:173: error: ‘handle_scope’ was not declared in this scope ../buffertools.cc:183: error: ‘handle_scope’ was not declared in this scope ../buffertools.cc:191: error: ‘class v8::Isolate’ has no member named ‘ThrowException’ ../buffertools.cc: In member function ‘v8::Local<v8::Value><unnamed>::FillAction::apply(v8::Local<v8::Object>, const v8::FunctionCallbackInfo<v8::Value>&, uint32_t)’: ../buffertools.cc:267: error: ‘class v8::Isolate’ has no member named ‘ThrowException’ ../buffertools.cc: In member function ‘v8::Local<v8::Value><unnamed>::EqualsAction::apply(v8::Local<v8::Object>, const uint8_t*, size_t, const v8::FunctionCallbackInfo<v8::Value>&, uint32_t)’: ../buffertools.cc:301: error: no matching function for call to ‘v8::Boolean::New(v8::Isolate*, bool)’ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:5931: note: candidates are: static v8::Handle<v8::Boolean> v8::Boolean::New(bool) ../buffertools.cc: In member function ‘v8::Local<v8::Value><unnamed>::CompareAction::apply(v8::Local<v8::Object>, const uint8_t*, size_t, const v8::FunctionCallbackInfo<v8::Value>&, uint32_t)’: ../buffertools.cc:311: error: invalid conversion from ‘v8::Isolate*’ to ‘int32_t’ ../buffertools.cc:311: error: initializing argument 1 of ‘static v8::Local<v8::Integer> v8::Integer::New(int32_t, v8::Isolate*)’ ../buffertools.cc:311: error: invalid conversion from ‘int’ to ‘v8::Isolate*’ ../buffertools.cc:311: error: initializing argument 2 of ‘static v8::Local<v8::Integer> v8::Integer::New(int32_t, v8::Isolate*)’ ../buffertools.cc: In member function ‘v8::Local<v8::Value><unnamed>::IndexOfAction::apply(v8::Local<v8::Object>, const uint8_t*, size_t, const v8::FunctionCallbackInfo<v8::Value>&, uint32_t)’: ../buffertools.cc:335: error: invalid conversion from ‘v8::Isolate*’ to ‘int32_t’ ../buffertools.cc:335: error: initializing argument 1 of ‘static v8::Local<v8::Integer> v8::Integer::New(int32_t, v8::Isolate*)’ ../buffertools.cc:335: error: invalid conversion from ‘ptrdiff_t’ to ‘v8::Isolate*’ ../buffertools.cc:335: error: initializing argument 2 of ‘static v8::Local<v8::Integer> v8::Integer::New(int32_t, v8::Isolate*)’ ../buffertools.cc: In function ‘v8::Local<v8::Value><unnamed>::decodeHex(const uint8_t*, size_t, const v8::FunctionCallbackInfo<v8::Value>&, uint32_t)’: ../buffertools.cc:358: error: ‘class v8::Isolate’ has no member named ‘ThrowException’ ../buffertools.cc:367: error: no matching function for call to ‘New(v8::Isolate*, long unsigned int)’ /home/hu/.node-gyp/0.11.8/src/node_buffer.h:46: note: candidates are: v8::Local<v8::Object> node::Buffer::New(size_t) /home/hu/.node-gyp/0.11.8/src/node_buffer.h:48: note: v8::Local<v8::Object> node::Buffer::New(v8::Handle<v8::String>, node::encoding) /home/hu/.node-gyp/0.11.8/src/node_buffer.h:52: note: v8::Local<v8::Object> node::Buffer::New(const char*, size_t) /home/hu/.node-gyp/0.11.8/src/node_buffer.h:54: note: v8::Local<v8::Object> node::Buffer::New(char*, size_t, void (*)(char*, void*), void*) ../buffertools.cc:376: error: ‘class v8::Isolate’ has no member named ‘ThrowException’ ../buffertools.cc: In function ‘void<unnamed>::Concat(const v8::FunctionCallbackInfo<v8::Value>&)’: ../buffertools.cc:455: error: ‘class v8::Isolate’ has no member named ‘ThrowException’ ../buffertools.cc:459: error: no matching function for call to ‘New(v8::Isolate*, size_t&)’ /home/hu/.node-gyp/0.11.8/src/node_buffer.h:46: note: candidates are: v8::Local<v8::Object> node::Buffer::New(size_t) /home/hu/.node-gyp/0.11.8/src/node_buffer.h:48: note: v8::Local<v8::Object> node::Buffer::New(v8::Handle<v8::String>, node::encoding) /home/hu/.node-gyp/0.11.8/src/node_buffer.h:52: note: v8::Local<v8::Object> node::Buffer::New(const char*, size_t) /home/hu/.node-gyp/0.11.8/src/node_buffer.h:54: note: v8::Local<v8::Object> node::Buffer::New(char*, size_t, void (*)(char*, void*), void*) ../buffertools.cc:477: error: ‘class v8::Isolate’ has no member named ‘ThrowException’ make: *** [Release/obj.target/buffertools/buffertools.o] Error 1 make: Leaving directory `/srv/node/SparkCore-WebApp/node_modules/buffertools/build' gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/home/hu/.nvm/v0.11.8/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23) gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:106:17) gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:827:12) gyp ERR! System Linux 2.6.32-358.6.2.el6.x86_64 gyp ERR! command "node" "/home/hu/.nvm/v0.11.8/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /srv/node/SparkCore-WebApp/node_modules/buffertools gyp ERR! node -v v0.11.8 gyp ERR! node-gyp -v v0.11.0 gyp ERR! not ok npm ERR! buffertools@2.1.2 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the buffertools@2.1.2 install script. npm ERR! This is most likely a problem with the buffertools package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls buffertools npm ERR! There is likely additional logging output above. npm ERR! System Linux 2.6.32-358.6.2.el6.x86_64 npm ERR! command "/home/hu/.nvm/v0.11.8/bin/node" "/home/hu/.nvm/v0.11.8/bin/npm" "install" "buffertools" npm ERR! cwd /srv/node/SparkCore-WebApp npm ERR! node -v v0.11.8 npm ERR! npm -v 1.3.13 npm ERR! code ELIFECYCLE npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /srv/node/SparkCore-WebApp/npm-debug.log npm ERR! not ok code 0
檢查 g++ 版本
$ g++ -v Using built-in specs. Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux Thread model: posix gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
好吧,centos 自帶版本實在太低,升級 g++ 版本
# /etc/yum.repos.d/DevToolset.repo [DevToolset-2] name=RedHat DevToolset v2 $releasever - $basearch baseurl=http://puias.princeton.edu/data/puias/DevToolset/$releasever/$basearch/ enabled=1 gpgcheck=0
$ sudo yum install devtoolset-2 $ scl enable devtoolset-2 bash $ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-2/root/usr/libexec/gcc/x86_64-redhat-linux/4.8.1/lto-wrapper Target: x86_64-redhat-linux Configured with: ../configure --prefix=/opt/rh/devtoolset-2/root/usr --mandir=/opt/rh/devtoolset-2/root/usr/share/man --infodir=/opt/rh/devtoolset-2/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,fortran,lto --enable-plugin --with-linker-hash-style=gnu --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.1-20130715/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.1-20130715/obj-x86_64-redhat-linux/cloog-install --with-mpc=/builddir/build/BUILD/gcc-4.8.1-20130715/obj-x86_64-redhat-linux/mpc-install --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux Thread model: posix gcc version 4.8.1 20130715 (Red Hat 4.8.1-4) (GCC)
重新試試
$ npm install npm http GET http://registry.cnpmjs.org/buffertools npm http 304 http://registry.cnpmjs.org/buffertools > buffertools@1.1.1 install /home/hu/node/node-mjpeg-proxy/node_modules/buffertools > node-gyp rebuild make: Entering directory `/home/hu/node/node-mjpeg-proxy/node_modules/buffertools/build' CXX(target) Release/obj.target/buffertools/buffertools.o In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h: In member function 'void v8::ReturnValue<T>::Set(uint32_t)': /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:5780:31: warning: typedef 'I' locally defined but not used [-Wunused-local-typedefs] typedef internal::Internals I; ^ ../buffertools.cc: At global scope: ../buffertools.cc:34:52: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope); ^ ../buffertools.cc:34:63: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope); ^ ../buffertools.cc:36:33: error: 'Arguments' does not name a type Handle<Value> operator()(const Arguments& args) { ^ ../buffertools.cc:36:44: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> operator()(const Arguments& args) { ^ ../buffertools.cc: In member function 'v8::Handle<v8::Value> {anonymous}::UnaryAction<Derived>::operator()(const int&)': ../buffertools.cc:39:29: error: request for member 'This' in 'args', which is of non-class type 'const int' Local<Object> self = args.This(); ^ ../buffertools.cc: At global scope: ../buffertools.cc:50:86: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const uint8_t* data, size_t size, const Arguments& args, HandleScope& scope); ^ ../buffertools.cc:50:97: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const uint8_t* data, size_t size, const Arguments& args, HandleScope& scope); ^ ../buffertools.cc:52:33: error: 'Arguments' does not name a type Handle<Value> operator()(const Arguments& args) { ^ ../buffertools.cc:52:44: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> operator()(const Arguments& args) { ^ ../buffertools.cc: In member function 'v8::Handle<v8::Value> {anonymous}::BinaryAction<Derived>::operator()(const int&)': ../buffertools.cc:55:29: error: request for member 'This' in 'args', which is of non-class type 'const int' Local<Object> self = args.This(); ^ ../buffertools.cc:61:13: error: invalid types 'const int[int]' for array subscript if (args[0]->IsString()) { ^ ../buffertools.cc:62:30: error: invalid types 'const int[int]' for array subscript String::Utf8Value s(args[0]->ToString()); ^ ../buffertools.cc:65:33: error: invalid types 'const int[int]' for array subscript if (Buffer::HasInstance(args[0])) { ^ ../buffertools.cc:66:32: error: invalid types 'const int[int]' for array subscript Local<Object> other = args[0]->ToObject(); ^ ../buffertools.cc: At global scope: ../buffertools.cc:119:52: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:119:63: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:125:52: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:125:63: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc: In member function 'v8::Handle<v8::Value> {anonymous}::FillAction::apply(v8::Handle<v8::Object>&, const int&, v8::HandleScope&)': ../buffertools.cc:126:13: error: invalid types 'const int[int]' for array subscript if (args[0]->IsInt32()) { ^ ../buffertools.cc:127:18: error: invalid types 'const int[int]' for array subscript int c = args[0]->ToInt32()->Int32Value(); ^ ../buffertools.cc:131:13: error: invalid types 'const int[int]' for array subscript if (args[0]->IsString()) { ^ ../buffertools.cc:132:30: error: invalid types 'const int[int]' for array subscript String::Utf8Value s(args[0]->ToString()); ^ ../buffertools.cc:136:33: error: invalid types 'const int[int]' for array subscript if (Buffer::HasInstance(args[0])) { ^ ../buffertools.cc:137:33: error: invalid types 'const int[int]' for array subscript Handle<Object> other = args[0]->ToObject(); ^ ../buffertools.cc: At global scope: ../buffertools.cc:152:52: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:152:63: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:164:86: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const uint8_t* data, size_t size, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:164:97: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const uint8_t* data, size_t size, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:170:86: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const uint8_t* data, size_t size, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:170:97: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const uint8_t* data, size_t size, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:176:88: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const uint8_t* data2, size_t size2, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:176:99: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const uint8_t* data2, size_t size2, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc: In member function 'v8::Handle<v8::Value> {anonymous}::IndexOfAction::apply(v8::Handle<v8::Object>&, const uint8_t*, size_t, const int&, v8::HandleScope&)': ../buffertools.cc:180:25: error: invalid types 'const int[int]' for array subscript int32_t start = args[1]->Int32Value(); ^ ../buffertools.cc: At global scope: ../buffertools.cc:209:84: error: 'Arguments' does not name a type inline Handle<Value> decodeHex(const uint8_t* const data, const size_t size, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:209:95: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] inline Handle<Value> decodeHex(const uint8_t* const data, const size_t size, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc: In function 'v8::Handle<v8::Value> {anonymous}::decodeHex(const uint8_t*, size_t, const int&, v8::HandleScope&)': ../buffertools.cc:219:50: error: 'class v8::Object' has no member named 'handle_' Handle<Object>& buffer = Buffer::New(size / 2)->handle_; ^ ../buffertools.cc: At global scope: ../buffertools.cc:240:52: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:240:63: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:248:52: error: 'Arguments' does not name a type Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:248:63: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> apply(Handle<Object>& buffer, const Arguments& args, HandleScope& scope) { ^ ../buffertools.cc:270:27: error: 'Arguments' does not name a type Handle<Value> Clear(const Arguments& args) { ^ ../buffertools.cc:270:38: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> Clear(const Arguments& args) { ^ ../buffertools.cc:274:26: error: 'Arguments' does not name a type Handle<Value> Fill(const Arguments& args) { ^ ../buffertools.cc:274:37: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> Fill(const Arguments& args) { ^ ../buffertools.cc:278:29: error: 'Arguments' does not name a type Handle<Value> Reverse(const Arguments& args) { ^ ../buffertools.cc:278:40: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> Reverse(const Arguments& args) { ^ ../buffertools.cc:282:28: error: 'Arguments' does not name a type Handle<Value> Equals(const Arguments& args) { ^ ../buffertools.cc:282:39: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> Equals(const Arguments& args) { ^ ../buffertools.cc:286:29: error: 'Arguments' does not name a type Handle<Value> Compare(const Arguments& args) { ^ ../buffertools.cc:286:40: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> Compare(const Arguments& args) { ^ ../buffertools.cc:290:29: error: 'Arguments' does not name a type Handle<Value> IndexOf(const Arguments& args) { ^ ../buffertools.cc:290:40: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> IndexOf(const Arguments& args) { ^ ../buffertools.cc:294:29: error: 'Arguments' does not name a type Handle<Value> FromHex(const Arguments& args) { ^ ../buffertools.cc:294:40: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> FromHex(const Arguments& args) { ^ ../buffertools.cc:298:27: error: 'Arguments' does not name a type Handle<Value> ToHex(const Arguments& args) { ^ ../buffertools.cc:298:38: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> ToHex(const Arguments& args) { ^ ../buffertools.cc:302:28: error: 'Arguments' does not name a type Handle<Value> Concat(const Arguments& args) { ^ ../buffertools.cc:302:39: error: ISO C++ forbids declaration of 'args' with no type [-fpermissive] Handle<Value> Concat(const Arguments& args) { ^ ../buffertools.cc: In function 'v8::Handle<v8::Value> {anonymous}::Concat(const int&)': ../buffertools.cc:303:14: error: no matching function for call to 'v8::HandleScope::HandleScope()' HandleScope scope; ^ ../buffertools.cc:303:14: note: candidates are: In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&) HandleScope(const HandleScope&); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: candidate expects 1 argument, 0 provided /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: v8::HandleScope::HandleScope(v8::Isolate*) HandleScope(Isolate* isolate); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: candidate expects 1 argument, 0 provided ../buffertools.cc:306:36: error: request for member 'Length' in 'args', which is of non-class type 'const int' for (int index = 0, length = args.Length(); index < length; ++index) { ^ ../buffertools.cc:307:32: error: invalid types 'const int[int]' for array subscript Local<Value> arg = args[index]; ^ ../buffertools.cc:324:8: error: expected primary-expression before '&' token Buffer& dst = *Buffer::New(size); ^ ../buffertools.cc:324:10: error: 'dst' was not declared in this scope Buffer& dst = *Buffer::New(size); ^ ../buffertools.cc:327:36: error: request for member 'Length' in 'args', which is of non-class type 'const int' for (int index = 0, length = args.Length(); index < length; ++index) { ^ ../buffertools.cc:328:32: error: invalid types 'const int[int]' for array subscript Local<Value> arg = args[index]; ^ ../buffertools.cc: In function 'void {anonymous}::RegisterModule(v8::Handle<v8::Object>)': ../buffertools.cc:352:72: error: invalid conversion from 'v8::Handle<v8::Value> (*)(const int&)' to 'v8::FunctionCallback {aka void (*)(const v8::FunctionCallbackInfo<v8::Value>&)}' [-fpermissive] target->Set(String::NewSymbol("concat"), FunctionTemplate::New(Concat)->GetFunction()); ^ In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:3311:34: error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::FunctionCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>, int)' [-fpermissive] static Local<FunctionTemplate> New( ^ ../buffertools.cc:353:70: error: invalid conversion from 'v8::Handle<v8::Value> (*)(const int&)' to 'v8::FunctionCallback {aka void (*)(const v8::FunctionCallbackInfo<v8::Value>&)}' [-fpermissive] target->Set(String::NewSymbol("fill"), FunctionTemplate::New(Fill)->GetFunction()); ^ In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:3311:34: error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::FunctionCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>, int)' [-fpermissive] static Local<FunctionTemplate> New( ^ ../buffertools.cc:354:71: error: invalid conversion from 'v8::Handle<v8::Value> (*)(const int&)' to 'v8::FunctionCallback {aka void (*)(const v8::FunctionCallbackInfo<v8::Value>&)}' [-fpermissive] target->Set(String::NewSymbol("clear"), FunctionTemplate::New(Clear)->GetFunction()); ^ In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:3311:34: error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::FunctionCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>, int)' [-fpermissive] static Local<FunctionTemplate> New( ^ ../buffertools.cc:355:73: error: invalid conversion from 'v8::Handle<v8::Value> (*)(const int&)' to 'v8::FunctionCallback {aka void (*)(const v8::FunctionCallbackInfo<v8::Value>&)}' [-fpermissive] target->Set(String::NewSymbol("reverse"), FunctionTemplate::New(Reverse)->GetFunction()); ^ In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:3311:34: error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::FunctionCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>, int)' [-fpermissive] static Local<FunctionTemplate> New( ^ ../buffertools.cc:356:72: error: invalid conversion from 'v8::Handle<v8::Value> (*)(const int&)' to 'v8::FunctionCallback {aka void (*)(const v8::FunctionCallbackInfo<v8::Value>&)}' [-fpermissive] target->Set(String::NewSymbol("equals"), FunctionTemplate::New(Equals)->GetFunction()); ^ In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:3311:34: error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::FunctionCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>, int)' [-fpermissive] static Local<FunctionTemplate> New( ^ ../buffertools.cc:357:73: error: invalid conversion from 'v8::Handle<v8::Value> (*)(const int&)' to 'v8::FunctionCallback {aka void (*)(const v8::FunctionCallbackInfo<v8::Value>&)}' [-fpermissive] target->Set(String::NewSymbol("compare"), FunctionTemplate::New(Compare)->GetFunction()); ^ In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:3311:34: error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::FunctionCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>, int)' [-fpermissive] static Local<FunctionTemplate> New( ^ ../buffertools.cc:358:73: error: invalid conversion from 'v8::Handle<v8::Value> (*)(const int&)' to 'v8::FunctionCallback {aka void (*)(const v8::FunctionCallbackInfo<v8::Value>&)}' [-fpermissive] target->Set(String::NewSymbol("indexOf"), FunctionTemplate::New(IndexOf)->GetFunction()); ^ In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:3311:34: error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::FunctionCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>, int)' [-fpermissive] static Local<FunctionTemplate> New( ^ ../buffertools.cc:359:73: error: invalid conversion from 'v8::Handle<v8::Value> (*)(const int&)' to 'v8::FunctionCallback {aka void (*)(const v8::FunctionCallbackInfo<v8::Value>&)}' [-fpermissive] target->Set(String::NewSymbol("fromHex"), FunctionTemplate::New(FromHex)->GetFunction()); ^ In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:3311:34: error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::FunctionCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>, int)' [-fpermissive] static Local<FunctionTemplate> New( ^ ../buffertools.cc:360:71: error: invalid conversion from 'v8::Handle<v8::Value> (*)(const int&)' to 'v8::FunctionCallback {aka void (*)(const v8::FunctionCallbackInfo<v8::Value>&)}' [-fpermissive] target->Set(String::NewSymbol("toHex"), FunctionTemplate::New(ToHex)->GetFunction()); ^ In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:3311:34: error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::FunctionCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>, int)' [-fpermissive] static Local<FunctionTemplate> New( ^ ../buffertools.cc: In instantiation of 'v8::Handle<v8::Value> {anonymous}::UnaryAction<Derived>::operator()(const int&) [with Derived = {anonymous}::ClearAction]': ../buffertools.cc:271:27: required from here ../buffertools.cc:37:15: error: no matching function for call to 'v8::HandleScope::HandleScope()' HandleScope scope; ^ ../buffertools.cc:37:15: note: candidates are: In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&) HandleScope(const HandleScope&); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: candidate expects 1 argument, 0 provided /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: v8::HandleScope::HandleScope(v8::Isolate*) HandleScope(Isolate* isolate); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: candidate expects 1 argument, 0 provided ../buffertools.cc: In instantiation of 'v8::Handle<v8::Value> {anonymous}::UnaryAction<Derived>::operator()(const int&) [with Derived = {anonymous}::FillAction]': ../buffertools.cc:275:26: required from here ../buffertools.cc:37:15: error: no matching function for call to 'v8::HandleScope::HandleScope()' HandleScope scope; ^ ../buffertools.cc:37:15: note: candidates are: In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&) HandleScope(const HandleScope&); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: candidate expects 1 argument, 0 provided /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: v8::HandleScope::HandleScope(v8::Isolate*) HandleScope(Isolate* isolate); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: candidate expects 1 argument, 0 provided ../buffertools.cc: In instantiation of 'v8::Handle<v8::Value> {anonymous}::UnaryAction<Derived>::operator()(const int&) [with Derived = {anonymous}::ReverseAction]': ../buffertools.cc:279:29: required from here ../buffertools.cc:37:15: error: no matching function for call to 'v8::HandleScope::HandleScope()' HandleScope scope; ^ ../buffertools.cc:37:15: note: candidates are: In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&) HandleScope(const HandleScope&); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: candidate expects 1 argument, 0 provided /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: v8::HandleScope::HandleScope(v8::Isolate*) HandleScope(Isolate* isolate); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: candidate expects 1 argument, 0 provided ../buffertools.cc: In instantiation of 'v8::Handle<v8::Value> {anonymous}::BinaryAction<Derived>::operator()(const int&) [with Derived = {anonymous}::EqualsAction]': ../buffertools.cc:283:28: required from here ../buffertools.cc:53:15: error: no matching function for call to 'v8::HandleScope::HandleScope()' HandleScope scope; ^ ../buffertools.cc:53:15: note: candidates are: In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&) HandleScope(const HandleScope&); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: candidate expects 1 argument, 0 provided /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: v8::HandleScope::HandleScope(v8::Isolate*) HandleScope(Isolate* isolate); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: candidate expects 1 argument, 0 provided ../buffertools.cc: In instantiation of 'v8::Handle<v8::Value> {anonymous}::BinaryAction<Derived>::operator()(const int&) [with Derived = {anonymous}::CompareAction]': ../buffertools.cc:287:29: required from here ../buffertools.cc:53:15: error: no matching function for call to 'v8::HandleScope::HandleScope()' HandleScope scope; ^ ../buffertools.cc:53:15: note: candidates are: In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&) HandleScope(const HandleScope&); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: candidate expects 1 argument, 0 provided /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: v8::HandleScope::HandleScope(v8::Isolate*) HandleScope(Isolate* isolate); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: candidate expects 1 argument, 0 provided ../buffertools.cc: In instantiation of 'v8::Handle<v8::Value> {anonymous}::BinaryAction<Derived>::operator()(const int&) [with Derived = {anonymous}::IndexOfAction]': ../buffertools.cc:291:29: required from here ../buffertools.cc:53:15: error: no matching function for call to 'v8::HandleScope::HandleScope()' HandleScope scope; ^ ../buffertools.cc:53:15: note: candidates are: In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&) HandleScope(const HandleScope&); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: candidate expects 1 argument, 0 provided /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: v8::HandleScope::HandleScope(v8::Isolate*) HandleScope(Isolate* isolate); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: candidate expects 1 argument, 0 provided ../buffertools.cc: In instantiation of 'v8::Handle<v8::Value> {anonymous}::UnaryAction<Derived>::operator()(const int&) [with Derived = {anonymous}::FromHexAction]': ../buffertools.cc:295:29: required from here ../buffertools.cc:37:15: error: no matching function for call to 'v8::HandleScope::HandleScope()' HandleScope scope; ^ ../buffertools.cc:37:15: note: candidates are: In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&) HandleScope(const HandleScope&); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: candidate expects 1 argument, 0 provided /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: v8::HandleScope::HandleScope(v8::Isolate*) HandleScope(Isolate* isolate); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: candidate expects 1 argument, 0 provided ../buffertools.cc: In instantiation of 'v8::Handle<v8::Value> {anonymous}::UnaryAction<Derived>::operator()(const int&) [with Derived = {anonymous}::ToHexAction]': ../buffertools.cc:299:27: required from here ../buffertools.cc:37:15: error: no matching function for call to 'v8::HandleScope::HandleScope()' HandleScope scope; ^ ../buffertools.cc:37:15: note: candidates are: In file included from ../buffertools.cc:16:0: /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&) HandleScope(const HandleScope&); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:783:3: note: candidate expects 1 argument, 0 provided /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: v8::HandleScope::HandleScope(v8::Isolate*) HandleScope(Isolate* isolate); ^ /home/hu/.node-gyp/0.11.8/deps/v8/include/v8.h:756:3: note: candidate expects 1 argument, 0 provided ../buffertools.cc: In function 'v8::Handle<v8::Value> {anonymous}::Concat(const int&)': ../buffertools.cc:349:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ make: *** [Release/obj.target/buffertools/buffertools.o] Error 1 make: Leaving directory `/home/hu/node/node-mjpeg-proxy/node_modules/buffertools/build' gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/home/hu/.nvm/v0.11.8/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23) gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:106:17) gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:827:12) gyp ERR! System Linux 2.6.32-358.6.2.el6.x86_64 gyp ERR! command "node" "/home/hu/.nvm/v0.11.8/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /home/hu/node/node-mjpeg-proxy/node_modules/buffertools gyp ERR! node -v v0.11.8 gyp ERR! node-gyp -v v0.11.0 gyp ERR! not ok npm ERR! buffertools@1.1.1 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the buffertools@1.1.1 install script. npm ERR! This is most likely a problem with the buffertools package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls buffertools npm ERR! There is likely additional logging output above. npm ERR! System Linux 2.6.32-358.6.2.el6.x86_64 npm ERR! command "/home/hu/.nvm/v0.11.8/bin/node" "/home/hu/.nvm/v0.11.8/bin/npm" "install" npm ERR! cwd /home/hu/node/node-mjpeg-proxy npm ERR! node -v v0.11.8 npm ERR! npm -v 1.3.13 npm ERR! code ELIFECYCLE npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /home/hu/node/node-mjpeg-proxy/npm-debug.log npm ERR! not ok code 0
v8 版本不匹配,安裝一個0.10.29試試。
npm install > buffertools@1.1.1 install /home/hu/node/node-mjpeg-proxy/node_modules/buffertools > node-gyp rebuild make: Entering directory `/home/hu/node/node-mjpeg-proxy/node_modules/buffertools/build' CXX(target) Release/obj.target/buffertools/buffertools.o SOLINK_MODULE(target) Release/obj.target/buffertools.node SOLINK_MODULE(target) Release/obj.target/buffertools.node: Finished COPY Release/buffertools.node make: Leaving directory `/home/hu/node/node-mjpeg-proxy/node_modules/buffertools/build' buffertools@1.1.1 node_modules/buffertools
至此安裝成功了。結論是不僅要匹配g++版本,也需要匹配v8版本。