Xcode“ld:library not found”for C++ makefile project

olmpazwi  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(124)

操作系统: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命令会失败,而我的却不会?

sxpgvts3

sxpgvts31#

Link还应该在-ljpeg标志之前接收一个-L<path>形式的标志,该标志具有jpeg库的父文件夹的路径。
因此,将-L/usr/local/lib添加到其他链接器标志构建设置中,然后重试。
找到正确标志的简单方法是运行pkg-config

pkg-config --libs libjpeg
-L/usr/local/Cellar/jpeg/9d/lib -ljpeg

如果失败,您可以:

  • 查找可执行文件将在以下位置查找dylib的默认路径:otool -L executable
  • 从原始位置复制dylib。
  • 将其粘贴到像@executable_path/../Resources/lib@loader_path/或第一步显示的任何文件夹中。如果需要,创建这些文件夹。

然后重建。
最健壮的方法是在-l选项中传递完整路径,而不是将其分为两个组件。

相关问题