gpt4 book ai didi

javascript - 使用 node-gyp configure 更改处理器架构

转载 作者:搜寻专家 更新时间:2023-10-31 23:31:56 24 4
gpt4 key购买 nike

我正在尝试创建一个 Node C 插件。我的是 64 位机器,但我需要将 Node C Addon 编译为 32 位二进制文​​件。默认情况下,node-gyp 会选择所有 64 位库进行编译和链接过程。

{
"targets": [
{
"cflags": [ "-m32" ],
"ldflags": [ "-m elf_i386" ],
"cflags_cc": [ "-fPIC -m32" ],
"target_name": "hello",
"sources": [ "Hello.cpp" ],
}
}

这是我的 bindings.gyp 文件。我在 cflags 中传递 -m32 并将 ldflags 设置为 -m elf_i386。它编译得很好,但我仍然在编译过程的详细输出中看到 -m64

g++ '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' ... 
-fPIC -Wall -Wextra -Wno-unused-parameter -pthread -m64 -m32 -O2 -fno-strict-aliasing
-fno-tree-vrp -fno-tree-sink -fno-rtti -fno-exceptions -fPIC -MMD -MF
./Release/.deps/Release/obj.target/hello/Hello.o.d.raw -c -o
Release/obj.target/hello/Hello.o ../Hello.cpp

并且在链接过程中它仍然尝试查找 64 位库,但失败了。

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-****/4.1.2/libstdc++.so when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status

那个不兼容的文件实际上是一个指向/lib64/libstdc++.so.6.0.8的软链接(soft link)

我用 node-gyp clean configure build --verbose 编译

如何覆盖此行为并使 node-gyp 编译为 32 位架构?

最佳答案

我终于想出了一个办法来做到这一点。

node-gyp clean configure build --verbose --arch=ia32

关于javascript - 使用 node-gyp configure 更改处理器架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17739095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com