Node.js C ++ расширение развертывания - PullRequest
0 голосов
/ 24 февраля 2012

Я следовал Написание собственного расширения Node.js и успешно создал файл helloworld.node. И я могу успешно позвонить на helloworld.node.

Более того, у меня есть test.js для звонка helloworld.node. Содержание test.js составляет

var mhw = require('./helloworld/build/Release/helloworld');
var hw = new mhw.HelloWorld();
console.log(hw.hello());

Но я получил ошибку Unable to load shared library после того, как переместил helloworld.node и test.js на другой компьютер.

hkalex(at)shellmix ~/nodetest> node test.js

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Unable to load shared library /homex/hkalex/nodetest/helloworld/build/Release/helloworld.node
    at Object..node (module.js:463:11)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/homex/hkalex/nodetest/test.js:1:73)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
hkalex(at)shellmix ~/nodetest>

Я использую root в развивающемся компьютере. И я использую shellmix для тестирования.

Есть идеи? Спасибо!

Обновление

Если я помещаю исходный файл в shellmix и компилирую из исходного кода, все в порядке.

1 Ответ

1 голос
/ 24 февраля 2012

Я предполагаю, что на другой машине у вас нет той же архитектуры ЦП или операционной системы, и у вас есть машинный код. Обычно для собственных модулей узла они распространяют исходный код и автоматически компилируются при установке npm на целевой машине, чтобы убедиться, что она работает на их машине. При использовании gcc вы можете указать архитектуру процессора (добавив -m32 или -m64).

Если вы хотите скомпилировать для другой ОС, самый простой способ - просто скомпилировать в ОС, которую вы также можете иметь на виртуальной машине, используя virtualbox или VMware player .

Вы также можете иметь компиляцию для другой ОС, отличной от той, в которой вы используете кросс-компилятор, но это не рекомендуется, поскольку для сборки и обучения использованию потребуется некоторое время. Инструкции: здесь и здесь .

...