操作系统:Mac 10.14.6 -- Xcode版本:11.3.1
我有一个外部C++项目(使用现有的makefile来构建),我将其导入到Xcode中,当我尝试构建它时,我得到以下错误消息:ld: library not found for -ljpeg
.
奇怪的是,当我从命令行运行相同的构建命令($make all-recursive
)时,它成功构建。我已经仔细检查过了,相关的.dylib文件确实存在于/usr/local/lib中。从网上阅读,似乎Xcode构建设置需要库搜索路径来包含.dylib文件所在的目录,所以我在目标“构建设置”下添加了LIBRARY_SEARCH_PATHS,但这并没有解决问题。
有没有什么原因可以解释为什么Xcode的build命令会失败,而我的却不会?
1条答案
按热度按时间sxpgvts31#
Link还应该在
-ljpeg
标志之前接收一个-L<path>
形式的标志,该标志具有jpeg库的父文件夹的路径。因此,将
-L/usr/local/lib
添加到其他链接器标志构建设置中,然后重试。找到正确标志的简单方法是运行
pkg-config
:如果失败,您可以:
otool -L executable
@executable_path/../Resources/lib
或@loader_path/
或第一步显示的任何文件夹中。如果需要,创建这些文件夹。然后重建。
最健壮的方法是在
-l
选项中传递完整路径,而不是将其分为两个组件。