2014-02-25 51 views
2

我不得不在構建機器上構建我的節點應用程序,然後將應用程序移動到目標機器上,因爲我無法根據某些目標機器上的要求在目標機器上編譯C我的依賴。Node-expat錯誤的ELF類:ELFCLASS64

我遇到了一個編譯錯誤,正在吐出上面ELF類錯誤的node-expat。我已經嘗試在32位和64位版本的linux上重建我的節點應用程序,但似乎是通過將它移植到我的目標計算機(這應該是64位計算機)時遇到的問題。

我越來越對構建這些錯誤:

node-gyp rebuild 

make: Entering directory `/root/lumos/runner/node_modules/logbook/node_modules/simple-xmpp/node_modules/node-xmpp/node_modules/node-expat/build' 
    CC(target) Release/obj.target/expat/deps/libexpat/lib/xmlparse.o 
    CC(target) Release/obj.target/expat/deps/libexpat/lib/xmltok.o 
../deps/libexpat/lib/xmltok.c:471:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:471:1: warning: (near initialization for ‘latin1_encoding_ns.isName2’) 
../deps/libexpat/lib/xmltok.c:484:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:484:1: warning: (near initialization for ‘latin1_encoding.isName2’) 
../deps/libexpat/lib/xmltok.c:504:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:504:1: warning: (near initialization for ‘ascii_encoding_ns.isName2’) 
../deps/libexpat/lib/xmltok.c:517:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:517:1: warning: (near initialization for ‘ascii_encoding.isName2’) 
../deps/libexpat/lib/xmltok.c:730:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:730:1: warning: (near initialization for ‘little2_encoding_ns.isName2’) 
../deps/libexpat/lib/xmltok.c:749:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:749:1: warning: (near initialization for ‘little2_encoding.isName2’) 
../deps/libexpat/lib/xmltok.c:762:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:762:1: warning: (near initialization for ‘internal_little2_encoding_ns.isName2’) 
../deps/libexpat/lib/xmltok.c:775:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:775:1: warning: (near initialization for ‘internal_little2_encoding.isName2’) 
../deps/libexpat/lib/xmltok.c:871:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:871:1: warning: (near initialization for ‘big2_encoding_ns.isName2’) 
../deps/libexpat/lib/xmltok.c:890:1: warning: missing initializer 
../deps/libexpat/lib/xmltok.c:890:1: warning: (near initialization for ‘big2_encoding.isName2’) 
    CC(target) Release/obj.target/expat/deps/libexpat/lib/xmlrole.o 
    AR(target) Release/obj.target/deps/libexpat/libexpat.a 
    COPY Release/libexpat.a 
    CXX(target) Release/obj.target/node_expat/node-expat.o 
    SOLINK_MODULE(target) Release/obj.target/node_expat.node 
    SOLINK_MODULE(target) Release/obj.target/node_expat.node: Finished 
    COPY Release/node_expat.node 
make: Leaving directory `/root/lumos/runner/node_modules/logbook/node_modules/simple-xmpp/node_modules/node-xmpp/node_modules/node-expat/build' 

雖然它運行我建立在機器上的罰款。當我試圖在我的目標運行的機器,我發現了以下內容:

module.js:356 
    Module._extensions[extension](this, filename); 
          ^
Error: /root/lumos/runner/node_modules/logbook/node_modules/simple-xmpp/node_modules/node-xmpp/node_modules/node-expat/build/Release/node_expat.node: wrong ELF class: ELFCLASS64 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/root/lumos/runner/node_modules/logbook/node_modules/simple-xmpp/node_modules/node-xmpp/node_modules/node-expat/lib/node-expat.js:4:13) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
bash-4.1# 

是ELFCLASS64告訴我,該應用程序試圖調用64位的庫位或32位的庫?我可以強制node-expat使用正確的庫進行編譯,儘管node-gyp/npm?

回答

0

ELFCLASS64告訴我,該應用程序試圖調用64位庫或32位庫?

它告訴你一個32位程序試圖對dlopen一個64位庫。

從描述中不清楚你如何調用node,但是你在目標機器上調用的二進制文件是32位二進制文​​件,它無法加載64位共享庫。

您需要調用64位二進制代碼,或者以32位模式構建庫。

相關問題