告诉 linux 二进制在哪里加载共享库
Tell to linux binary where load shared libraries
我对共享库有问题。我有一个与一些共享库链接的二进制文件。我已经用 c++ 构建了所有使用 gcc -L dirLibraries ecc ecc -llibraryName1 -libraryName2 ecc现在,如果我启动我的二进制文件,告诉我他找不到一个库,如果我从另一个目录启动二进制文件,他告诉我找不到另一个库。我需要做什么才能告诉我的二进制文件在哪里需要独立加载库我启动程序的位置?
您可以将要加载的共享库放在库搜索路径上,或将包含它们的目录添加到LD_LIBRARY_PATH
中。另请参阅共享库,尤其是"第 3.2 节。如何使用库"和"第 3.3.1 节。LD_LIBRARY_PATH"。
有两个环境变量可能会有所帮助:
-
LD_RUN_PATH
在构建过程中用于配置查找共享库时要搜索的一组位置。 -
LD_LIBRARY_PATH
在运行程序时用于添加要搜索共享库的其他路径。
环境变量的设置方式在一定程度上取决于您使用的环境。如果您使用的是像 bash
或 ksh
这样的 shell,您可以使用
export LD_LIBRARY_PATH=/some/path:/another/path:/as/many/as/you/need
在它之后,从这个 shell 启动的程序将继承环境变量(你可能还想查看相关的文档,例如 bash 的文档)。
如果使用某种 IDE,则可能需要从~/.profile
文件中设置环境变量。
相关文章:
- 加载共享库时C++错误:libopencv_ximgproc.so.4.4
- 从 CMake 中的库目录加载共享库?
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 无法使用 python ctypes 加载C++共享库
- Linux c++.在预加载的共享库中定义的基类的崩溃调用函数
- 共享对象、符号、C/C++ 库链接和加载
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 在 win32 上生成 R 包:无法加载共享对象 (.dll)
- 使用CFBundleCreate在C++中的Mac上加载动态共享库(DLL)
- 加载共享库时出错:libbsoncxx.so._noabi:无法打开共享对象文件:没有此类文件或目录
- 在 Linux 上,在 C++ 程序中,如何找到已加载共享库的路径?
- 如何以编程方式查找加载的共享库的版本?
- 如何更改路径以修复错误"./main:加载共享库 libmkl_core.so 时出错?
- 正在加载共享对象:文件中未定义版本Qt_5
- ASAN 检测与动态加载库共享的类的 vtable 的 ODR 违规
- 如何处理加载错误的共享库版本的情况
- 使用共享指针加载到变量 C++ 中
- 将生成文件转换为CMakeLists;无法加载共享库
- 加载共享库时出现"错误:libSDL2_mixer-2.0.so.0:无法打开共享对象文件:没有这样的文件或目录
- 使用dlopen动态加载共享库