节点外派错误的ELF类:ELFCLASS64
Node-expat wrong ELF class: ELFCLASS64
我必须在构建机器上构建我的节点应用程序,然后将应用程序移动到目标机器上,因为我无法按照某些依赖项的要求在目标机器上编译 C。
我在 node-expat 上遇到了编译错误,它吐出了上述 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-gyp/npm强制node-expat使用正确的库进行编译吗?
ELFCLASS64
是否告诉我应用程序正在尝试调用 64 位库或 32 位库?
它告诉您 32 位进程试图dlopen
64 位库。
从您的描述中不清楚您如何调用 node
,但您在目标计算机上调用的二进制文件是 32 位二进制文件,无法加载 64 位共享库。
您需要改为调用 64 位二进制文件,或者在 32 位模式下构建库。
相关文章:
- 了解 ELF 可执行SHT_NOTE部分".note.ABI-tag"
- 在 elf 文件中查找全局变量的位置
- 是否有可能使用debug_info获取ELF文件的源代码?
- 使用 libpthread 在共享库中未定义的行为,但不将其作为依赖项在 ELF 中
- 使用程序集嵌入数据时"Undefined reference"错误,使用适用于窗口的 mingw-w64 编译(COFF 而不是 ELF)
- 挂接静态链接的 ELF 二进制文件
- 为什么我不能像C++中的小端序文件那样读取大端 ELF 文件?
- 如何获取与 objdump 输出的标签相对应的 ELF 二进制文件中的文件偏移量
- C/C++ 远程编译,使用 ELF 的本地调试会话(嵌入式,Cortex-M)
- I686-ELF的跨编译和链接libstdc (在Ubuntu上使用G 16.04)
- gcc linker - .obj dump 具有混合源代码程序集,但在 .elf 中链接时没有
- 节点外派错误的ELF类:ELFCLASS64
- 获取有关 ELF 中的函数和相关符号的信息
- GCC 错误错误的 ELF 类:ELFCLASS64,尽管有 -m64 标志
- 向ARM MCU项目添加两个C++文件时.ELF太大
- Android ndk:不是有效的ELF可执行文件
- 通过解析 ELF C++程序,将字符串文本的地址映射到字符串文本
- 编辑 ELF 文件中的变量值
- 强制将符号置于 ELF 文件的顶部
- Winelib可以将DLL直接链接到ELF可执行文件吗?