将本地 Openssl 链接到 Nodejs C++ 插件
Linking local Openssl to Nodejs C++ addon
我正在为使用 OpenSSL 3 的 Nodejs 编写 C++ 插件,在尝试使用命令 node-gyp build
:
编译代码时,我一直收到此错误
/Users/myuser/Library/Caches/node-gyp/17.0.1/include/node/openssl/macros.h:155:4: error: "OPENSSL_API_COMPAT expresses an impossible API compatibility level"
我可以看到这里使用的 OpenSSL 包含在 NodeJS 文件夹中,有什么方法可以 link 我在 mac M1 上用自制软件安装的 OpenSSL 库吗?
我的 binding.gyp 文件如下所示:
{
"targets": [
{
"target_name": "module",
"include_dirs": [ "/opt/homebrew/opt/openssl@3/include" ],
"sources": [ "./module.cpp" ],
"libraries": [
"/opt/homebrew/opt/openssl@3/lib/libcrypto.3.dylib",
"/opt/homebrew/opt/openssl@3/lib/libcrypto.a",
"/opt/homebrew/opt/openssl@3/lib/libcrypto.dylib"
]
}
]
}
这是 Node.js 中的一个问题:https://github.com/nodejs/node/issues/40575
这里有一个解决方法:https://github.com/mmomtchev/node-gdal-async/commit/85816cbeff104b5484aae840fe43661c16cb6032
将这两个定义添加到您的 gyp 中:
"OPENSSL_API_COMPAT=0x10100001L",
"OPENSSL_CONFIGURED_API=0x30000000L"
我是问题和解决方法的作者。
我正在为使用 OpenSSL 3 的 Nodejs 编写 C++ 插件,在尝试使用命令 node-gyp build
:
/Users/myuser/Library/Caches/node-gyp/17.0.1/include/node/openssl/macros.h:155:4: error: "OPENSSL_API_COMPAT expresses an impossible API compatibility level"
我可以看到这里使用的 OpenSSL 包含在 NodeJS 文件夹中,有什么方法可以 link 我在 mac M1 上用自制软件安装的 OpenSSL 库吗?
我的 binding.gyp 文件如下所示:
{
"targets": [
{
"target_name": "module",
"include_dirs": [ "/opt/homebrew/opt/openssl@3/include" ],
"sources": [ "./module.cpp" ],
"libraries": [
"/opt/homebrew/opt/openssl@3/lib/libcrypto.3.dylib",
"/opt/homebrew/opt/openssl@3/lib/libcrypto.a",
"/opt/homebrew/opt/openssl@3/lib/libcrypto.dylib"
]
}
]
}
这是 Node.js 中的一个问题:https://github.com/nodejs/node/issues/40575
这里有一个解决方法:https://github.com/mmomtchev/node-gdal-async/commit/85816cbeff104b5484aae840fe43661c16cb6032
将这两个定义添加到您的 gyp 中:
"OPENSSL_API_COMPAT=0x10100001L",
"OPENSSL_CONFIGURED_API=0x30000000L"
我是问题和解决方法的作者。