OSX 运行时动态库路径搜索
OSX runtime dynamic library path search
在Linux Ubuntu中,我可以使用动态库编译C++源代码,并在编译前通过设置环境变量$LD_RUN_PATH告诉gcc编译器在哪里可以找到.so lib文件。我想知道 OSX 中的 clang 编译器是否有等效的方法可以执行此类运行时动态库路径搜索?
谢谢!
编辑:
下面给出的重复链接不是我想要的!
我想将 dylib 的搜索路径编译到可执行文件中。在运行时,不应为 $DYLD_LIBRARY_PATH 环境路径显式设置任何路径信息。也就是说,当您回显$DYLD_LIBRARY_PATH时,不应看到指向dylib的路径点。
我通过使用
otool -L <executable>
以读取可执行文件中的搜索路径。
对于任何错误或缺少的搜索路径,我使用 install_name_too 来更新或添加搜索路径信息。
对我来说,我正在改变我原来的链接路径。我使用
install_name_tool -change <old_path> <new_path> <executable>
用于链接路径设置。在此之后,我能够正确运行可执行文件链接到dylib,而无需在$LD_LIBRARY_PATH或$LD_FALLBACK_LIBRARY_PATH中设置任何内容。
在带有 LLVM 编译器 "clang" 的 macOS 上,您可以使用 -F{dir} 和 -I{dir} 预处理器选项来搜索框架/库目录和包含目录。这些将编译器在哪里查找要链接的 *.dylib 动态库文件所在的非标准位置。
-Idirectory Add the specified directory to the search path for include files. -Fdirectory Add the specified directory to the search path for framework include files.
关于搜索行为,这些在 Xcode 中对应于项目或目标"构建设置",称为框架 ~、标头 ~ 和库搜索路径。
您是否希望某些动态库链接到您的应用程序由"常规"设置"链接的框架和库"控制。
有关如何管理动态加载程序 (dyld) 以及使用 @rpath 和@loader_path宏控制依赖库位置的更多信息,请参见:https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/RunpathDependentLibraries.html
- 如何在动态数组上使用搜索函数
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 按边长度递归搜索图中所有可行路径
- 在 C++ 中搜索动态分配的数组中的出现次数
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 添加 #include 的搜索路径
- 为什么"/usr/include"不在 GCC 默认搜索路径中
- 使用迭代深度优先搜索算法的未加权图的最短路径
- 如何从客户端为COM服务器设置dll搜索路径?
- 在动态链接中,.exe如何知道在更新库时在哪里搜索库?
- 链接库时的默认目录上的GCC或G 路径搜索顺序
- 从STD :: String获取QPIXMAP动态图像路径
- 使用动态规划在矩阵中的所有可能路径中具有最小总和的打印路径
- 包含标头中的搜索路径因编译器而异
- 在MacOS上编译一个动态库,库搜索路径指向同一目录(CMake)
- OSX 运行时动态库路径搜索
- 如何更改libasan的默认动态库搜索路径
- 为什么Xcode无法找到GLEW动态库,即使它被列在搜索路径中
- C++搜索动态数组
- 动态依赖库/tls搜索路径