Я пытаюсь построить аддон узла c ++ в Ubuntu, используя code :: blocks. Я создал общую библиотеку addon.node, которая зависит от другой общей библиотеки dep.so. При создании моего файла Basid JS с
var addon = require(./addon.node);
это дает
Error: dep.so: cannot open shared object file: No such file or directory
at Error (native)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:367:17)
at require (module.js:386:17)
at repl:1:13
at REPLServer.defaultEval (repl.js:130:27)
at bound (domain.js:254:14)
at REPLServer.runBound [as eval] (domain.js:267:12)
at REPLServer.<anonymous> (repl.js:277:12)
Мой файл dep.so включен при сборке addon.node и находится в том же каталоге, что и addon.node
работает ld addon.node, это дает (среди прочего)
ld: warning: dep.so, needed by addon.node, not found (try using -rpath or -rpath-link)
ld: warning: cannot find entry symbol _start; not setting start address
addon.node: undefined reference to `v8::ObjectTemplate::SetInternalFieldCount(int)'
Итак, кажется, у меня есть две проблемы:
1) он не может найти мою собственную созданную библиотеку dep.so
2) он не может найти библиотеку v8 (думаю, это нужно как-то собрать)
Любые предложения, как заставить это работать?
Ура, Майк
nbind упрощает написание привязок Node.js для библиотек и libui-узел практический пример его использования для создания кроссплатформенного нативного интерфейса. это binding.gyp
Файл показывает, как успешно связать с библиотекой под названием libui
помещается в корневой каталог модуля (не в каталог сборки).
В Windows:
"libraries": [
"<(module_root_dir)/libui.lib"]
Linux:
'ldflags': [
'-Wl,-rpath,<(module_root_dir)',
],
"libraries": [
"<(module_root_dir)/libui.so"]
OS X:
"xcode_settings": {
"OTHER_LDFLAGS": [
"-L<(module_root_dir)",
"-lui",
"-rpath",
"<(module_root_dir)"]
}