gpt4 book ai didi

c++ - 如何使用 Node C++ 插件部署动态库?

转载 作者:行者123 更新时间:2023-11-28 05:05:57 25 4
gpt4 key购买 nike

我正在使用 cmake-js 编译 Node C++ 插件。我有在我的 C 代码中引用的动态库。即:

*src
MyAddon.cpp
*foo
*include
*lib
*linux64
libfoo.so

编译正常。但是运行的时候报错

如何确保以可以在运行时链接的方式部署 libfoo.so?

添加到 package.json 中的文件不起作用。我可以在 package.json 中设置 LD_LIBRARY_PATH 吗?

最佳答案

所以解决了这个问题。诀窍是确保 rpath 设置正确(问题是 rpath 默认设置为绝对路径,因此它可以在本地工作,但在部署时不能工作)。

在 .node 文件上运行 readelf 时可以看到:

readelf -d build/Release/addon.node 

将返回类似这样的内容。注意绝对路径

Dynamic section at offset 0x2fd9d30 contains 31 entries:
.
.
0x000000000000000f (RPATH) Library rpath: [/home/user/foobartest/foo/lib]

我能找到的解决此问题的唯一方法是在 CMake 文件中执行此操作:

set(  CMAKE_SKIP_RPATH on )
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-rpath,foo/lib")

然后确保在运行时通过设置 env.process.LD_LIBRARY_PATH 正确设置了 LD_LIBRARY_PATH。

关于c++ - 如何使用 Node C++ 插件部署动态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792721/

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