首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OSX运行时动态库路径搜索

问OSX运行时动态库路径搜索
EN

Stack Overflow用户
提问于 2016-04-24 05:55:11
回答 1查看 5.6K关注 0票数 5

在Linux中,我可以使用动态库编译C++源代码,并通过在编译前设置环境变量$LD_RUN_PATH来告诉gcc编译器在哪里找到.so库文件。我想知道OSX中的clang编译器是否有类似的方法来执行这样的运行时动态库路径搜索?

非常感谢!

编辑:

下面给出的重复链接不是我想要的!

我想将dylib的搜索路径编译到可执行文件中。在运行时,不应该为$DYLD_LIBRARY_PATH环境路径显式设置任何路径信息。也就是说,当您回送$DYLD_LIBRARY_PATH时,不应该看到指向dylib的路径。

我通过使用

代码语言:javascript
复制
otool -L <executable>

读取可执行文件中的搜索路径。

对于任何错误或缺少搜索路径,我使用install_name_too更新或添加搜索路径信息。

对我来说,我正在改变我原来的链接路径。我使用

代码语言:javascript
复制
install_name_tool -change <old_path> <new_path> <executable>

用于链接路径设置。在此之后,我能够正确地运行可执行文件,链接到dylib,而无需在$LD_LIBRARY_PATH或$LD_FALLBACK_LIBRARY_PATH中设置任何内容。

EN

回答 1

Stack Overflow用户

发布于 2020-12-16 14:54:11

在具有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中对应于项目或目标"Build“,称为Framework ~、Header ~和Library搜索路径。

是否希望某些动态库链接到应用程序,取决于“一般”设置“链接框架和库”。

有关如何使用@rpath和@loader_path宏管理动态加载程序(dyld)和控制依赖库位置的更多信息,请参见:https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/RunpathDependentLibraries.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36819789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档