在 Mac 中加载动态库路径错误
loading dynamic library path error in mac
我现在正在构建一个动态库和一个使用此动态库的命令行插图程序。库和插图程序位于同一文件夹中:
/user/xxx/develop/debug/libdynamic.dylib
/user/xxx/develop/debug/illustration
当插图程序在我的计算机中运行良好时,我将插图程序以及动态库发送给我的同事,他将在他的计算机中运行插图程序。但是,每次他在命令窗口中运行插图程序时,该程序还会提醒它无法加载libdynamic.dylib
,因为它试图在/user/xxx/develop/debug/
中找到库,这在我同事的计算机上不可用。我在想我应该怎么做。非常感谢。
编辑:使用 otool 进行插图程序的输出如下:
/Users/xxx/develop/debug/libdynamic.dylib (compatibility version 0.0.0, current version 0.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.18.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
你需要
告诉illustration
在哪里可以找到libdynamic.dylib
你可以使用install_name_tool
(manpage(进行后期构建。您需要将新路径设置为 @executable_path/libdynamic.dylib
,如下所示:
$ install_name_tool -change /user/xxx/develop/debug/libdynamic.dylib
@executable_path/libdynamic.dylib
/user/xxx/develop/debug/illustration
(要传递给install_name_tool
的确切旧名称值将取决于它当前设置的内容,可以使用 otool -L /user/xxx/develop/debug/illustration
确定(。
避免这种废话(以及我自己的做法(的一种方法是使用 -install_name
链接器选项:
$(BINDIR)/libdynamic.dylib: $(OBJS)
$(CXX) -dynamiclib -current_version $(MAJOR_MINOR_VERSION)
-compatibility_version $(MAJOR_MINOR_VERSION)
-install_name @executable_path/libdynamic.dylib
$(LDFLAGS) -o $@ $(OBJS) $(LIBS)
(Makefile
片段取自此处(。
相关文章:
- CMake 错误"源似乎不包含 CMakeLists.txt",路径/库连接问题
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- CMake 错误 - 目标 foo INTERFACE_SOURCES属性包含在源目录中以前缀为前缀的路径
- 不断收到错误消息,并非所有控制路径都返回值
- 在 Windows 10 下为 VTK 生成 Makefile 时,Qt mkspecs 的路径错误
- rpmbuild check-rpath 报告错误,指出路径不是绝对的,不正确的
- 错误 LNK1104:错误消息中显示的路径未在其他依赖项中定义
- 函数路径追加上未解决的外部符号错误
- 如何更改路径以修复错误"./main:加载共享库 libmkl_core.so 时出错?
- 找不到 windows.winmd – 如果指定了路径,错误会乘以
- 无法转换 .CATPart 文件.错误:输入文件路径似乎包含不支持的字符
- 在结构函数之间传递文件路径 C++ 编辑:修复LNK2019错误
- SFML: dyld:即使更新了库路径,库也未加载错误
- 尝试使用堆栈简化目录路径时出现未解决的分段错误
- 运行 c++ 程序时搜索的路径错误
- Visual C++ 中的创建文件路径错误
- RegSetValueEx-路径错误,64位,以管理员身份运行
- 在 Mac 中加载动态库路径错误
- Libtool .la库文件路径错误
- 更新ndk后,eclipse中的包含路径错误