尝试运行我在Mac OS X中发送的可执行文件时,出现以下错误
dyld: Library not loaded: libboost_atomic.dylib
Referenced from: /Users/"Directory my executable is in"
Reason: image not found
Trace/BPT trap:5
Run Code Online (Sandbox Code Playgroud)
我已经安装了boost库,它们位于/opt/local/lib.我认为这个问题与可执行文件有关,只查看它所在的目录,就像我在那里粘贴'libboost_atomic.dylib'一样,它不再关心它了.不幸的是,它抱怨它无法找到下一个升级库.
有没有一种简单的方法来解决这个问题?
Xcode 7在Target> BuildPhases> Link Binary With Libraries>点击+按钮
当选择要添加的框架时,你找不到*.dylib,你会看到*.tbd.
这是什么原因?
**对于需要dylib的人,请点击此帖
所以我一直在尝试让动态库在我的Mac OS X下的XCode项目中工作.到目前为止,没有任何乐趣.
我能够加载dylib文件,但是当我调用dlsym获取函数指针时,它返回0并且dlerror表示找不到符号.
所以我想知道是否有一种简单的方法来列出从dylib文件导出的符号.任何想法都会很棒.
iOS(iPhone/iPad)上是否支持动态库?
在Xcode中,我尝试创建一个新项目 - > Framework&Library - > Cocoa Library(动态).在项目设置,我设置了基地SDK来iOS device 4.1和目标iOS4.1,但它有一个内置的错误:
target指定产品类型'com.apple.product-type.library.dynamic',但'iphonesimulator'平台没有这样的产品类型".
我选择的构建是模拟器 - >调试 - > i386.
在Xcode 6.0.1中使用嵌入式框架(dyld)时,部署目标小于iOS 8,我得到:
错误:
dyld: Library not loaded: @rpath/ObjectiveLyricsTouch2.framework/ObjectiveLyricsTouch2
Referenced from: /private/var/mobile/Containers/Bundle/Application/DC65ACA9-98E5-46CD-95F8-829D3416F6C0/musiXmatch.app/musiXmatch
Reason: image not found
(lldb)
Run Code Online (Sandbox Code Playgroud) 我有一个安装在其中的动态libray libtest.dylib /PATH/lib,以及一个使用安装的dylib的执行二进制文件myapp /PATH/bin.
我可以myapp按如下方式运行以找到dylib(在Mac OS X上使用DYLD_LIBRARY_PATH是否可以?并且,使用它的动态库搜索算法是什么?):
DYLD_LIBRARY_PATH="/PATH/lib" myapp
Run Code Online (Sandbox Code Playgroud)
我想我可以install_name_tool用来更新库和可执行文件,以便可以使用rpath找到库.我在这篇文章中使用了提示 - 如何在dylib中指定rpath?.
在lib中,我执行了这个命令来添加rpath.
install_name_tool -id "@rpath/libtest.dylib" libtest.dylib
install_name_tool -add_rpath "@executable_path/../lib/" libtest.dylib
Run Code Online (Sandbox Code Playgroud)
在bin中,我执行了install_name_tool -add_rpath "@executable_path/../lib/" myapp.
但是,当我myapp在bin目录中执行时,我有错误消息.
dyld: Library not loaded: libtest.dylib
Referenced from: /PATH/bin/./myapp
Reason: image not found
Trace/BPT trap: 5
Run Code Online (Sandbox Code Playgroud)
otool -l myapp 显示rpath在myapp中正确更新.
Load command 16
cmd LC_RPATH
cmdsize 40
path @executable_path/../lib/ (offset 12)
Run Code Online (Sandbox Code Playgroud)
libtest.dylib也是如此
Load command 13
cmd LC_RPATH
cmdsize 40
path …Run Code Online (Sandbox Code Playgroud) 我做了一个应用程序(可执行文件)成功调用了一些dylib,但是,dylib文件和可执行文件位于不同的目录中.我添加了目录包含dylib文件到$ PATH环境变量,但是,它仍然没有加载.我将所有dylib文件复制到可执行文件,程序最终运行.这确认了dylib文件没有问题.但是,我怎么能告诉操作系统找到它?在windows中,我只需要将包含dll文件的目录路径添加到$ PATH.我需要为Mac OS X做些什么?非常感谢!
当我brew doctor收到以下错误时:
dyld: Library not loaded: /usr/lib/libltdl.7.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
Error: No available formula for zlib
Run Code Online (Sandbox Code Playgroud)
该文件libltdl.7.dylib不在我的/ usr/lib目录中,但还有其他几个.dylib文件.
我正在运行10.8.1,安装了最新版本的Xcode(4.4.1)及其命令行工具.
知道如何解决这些错误吗?
我有几个.o文件,并希望将它们捆绑在.dylib中,我怎么能用Mac OS X使用gcc?非常感谢你.
我在Xcode中构建了一些命令行实用程序(普通C,没有Cocoa).我希望他们所有人都使用我的自定义版本的libpng,我希望通过在所有可执行文件中共享一个库副本来节省空间(我不介意重新分发.dylib它们).
我是否需要做一些魔术才能获得libpng导出符号?
"Link Binary with Libraries"是否静态构建阶段链接?
Apple的文档提到在运行时加载库dlopen,但是如何让Xcode创建可执行文件而不抱怨缺少符号?
我想我已经弄明白了:
libpng没有正确链接,因为我已经构建了32/64位可执行文件和32位库.库和可执行文件的构建设置必须匹配.
libpng的config.h需要有大量的定义 #define FEATURE_XXX_SUPPORTED
"Link Binary with Libraries"构建阶段处理动态库就好了,DYLD_FALLBACK_LIBRARY_PATH环境变量是.dylib从应用程序包加载s 所必需的.