2012-02-24 19 views
0

私はWriting Node.js Native Extensionに続き、helloworld.nodeファイルを正常に作成しました。そして私はhelloworld.nodeに首尾よく電話することができます。Node.js C++拡張の展開

さらに、私はhelloworld.nodeを呼び出すためにtest.jsを持っています。 test.jsの内容は

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

あるしかし、私は別のコンピュータにhelloworld.nodetest.jsを移動した後、私はUnable to load shared libraryエラーを得ました。

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

他のマシンでは、同じCPUアーキテクチャーやオペレーティングシステムがなく、マシン固有のコードがあると思います。通常、ノードネイティブモジュールの場合、ソースマシンをソースマシンに配布し、ターゲットマシンのnpm installで自動的にコンパイルして、マシン上で動作することを確認します。 gccを使用している場合は、CPUアーキテクチャ(-m32または-m64を追加)を指定できます。

別のOS用にコンパイルする場合は、OS上でコンパイルするのが最も簡単です。これは、virtualboxまたはVMware playerを使用して仮想マシン上にコンパイルすることができます。

クロスコンパイラを使用しているOS以外のOSでもコンパイルできますが、ビルドや使用方法の学習には時間がかかりますので、お勧めしません。手順はherehereです。

関連する問題