Неверный эмигрант класса ELF: ELFCLASS64

Мне нужно собрать приложение узла на сборочной машине, а затем переместить приложение на целевую машину, поскольку я не могу скомпилировать C на моей целевой машине, как того требуют некоторые из моих зависимостей.

У меня ошибка компиляции с узлом-экспатом, который выплевывает вышеупомянутую ошибку класса ELF. Я пытался пересобрать приложение для узлов на 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?

2

Решение

Является ELFCLASS64 говорит мне, что приложение пытается вызвать 64-битные или 32-битные библиотеки?

Это говорит вам, что 32-битный процесс пытался dlopen 64-битная библиотека.

Из вашего описания не ясно, как вы вызываете node, но двоичный файл, который вы вызываете на целевой машине, является 32-разрядным двоичным файлом, который не может загружать 64-разрядные разделяемые библиотеки.

Вместо этого вам нужно либо вызвать 64-битный двоичный файл, либо собрать ваши библиотеки в 32-битном режиме.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector