dyld:库未加载:在 OS X 上
dyld: Library not loaded: on OS X
我在OS X的命令行中使用g ++构建,而不是使用XCode。 当我构建可执行文件时,我必须将链接器标志包含在存储动态库的库中,但是当我运行可执行文件时,找不到动态库,并且我得到了错误dyld: Library not loaded: (foo)
。
这里已经有几个关于与特定软件包相关的动态库以及如何将动态库内置到 XCode 项目中的问题,但没有通用解释 Mac OS X 如何查找动态库以及如何将新的 .dylib 放入可执行文件的搜索路径中。
有人可以填补这个空白吗? 当使用可执行文件构建动态库时,Mac OS X 如何查找动态库,以及如何将指向动态库的链接放在正确的位置以便可执行文件运行?
我在OSX 10.9 - 小牛队。
一个好的起点是关于动态库编程主题的 Apple 文档尤其是运行路径依赖库。
"当动态加载程序 (dyld) 加载可执行文件时,它会按照链接时指定的顺序在运行路径搜索路径中查找运行路径依赖库。"
第一个想法是使用 otool 检查二进制文件的库依赖项:
otool -L /path/to/binary
然后,根据您希望如何分发库,您有不同的解决方案。
您可以在二进制文件中指定库的绝对路径。它应该用一个工具来完成,例如CMake。否则,您可以使用
install_name_tool to change the path to a library by hand.
大多数情况下,您希望部署二进制文件并将 dylib 放在单独的文件夹中。这些库是相对于二进制文件所在位置加载的。例如:
@loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle
有关路径的更多信息,我建议您阅读此博客。
相关文章:
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- Python ctypes:不会按预期加载 dll
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- 使用 SDL2 和SDL_image C++加载图像
- 无法使用加载库卸载注入的 dll (C++)
- dyld:库未加载:在 OS X 上
- Firebreath 插件无法在 Mac OS 10.7 上加载
- 如何使OS X Cocoa应用程序从它所在的文件夹加载自定义框架
- Mac OS X:观察网络流量(例如处理加载url操作在谷歌浏览器)