【问题标题】:How do I link libraries in Xcode 4?如何在 Xcode 4 中链接库?
【发布时间】:2012-11-25 08:04:41
【问题描述】:

我是 Apple Xcode 的完全初学者,但我遵循了 Xcode 文档和一些相关问题的建议,但没有成功。

我把GMP安装到/usr/local/bin,用这个库写了一个小程序,用gcc main.c -lgmp编译。它编译时没有任何警告或错误,并且可执行文件完美无缺。

我启动了一个新的 Xcode 项目(命令行工具;类型:C),将代码复制到新创建的 main.c,并打开项目构建设置。从那里我将 Linking > Other Linker Flags 设置为 -lgmp 并将 Search Paths > Library Search Paths 设置为 /usr/local/bin。但是,构建失败并出现预处理器错误“Gmp.h:没有这样的文件或目录”。

我已经尝试了几乎所有可以想象的标题:

#include "gmp.h"

#include <gmp.h>

#include "gmp"

#include "libgmp.a" 。 . .

这是我在过去三个月中的主要障碍,阻碍了我学习 C。任何能引导我找到最终解决方案的帮助将不胜感激。

【问题讨论】:

标签: c xcode xcode4 gmp


【解决方案1】:

您必须在 Xcode 项目中设置一些东西。例如,我在/opt/gmp/5.0.2 中安装了 gmp,我将使用它作为示例。实际库安装到/opt/gmp/5.0.2/lib,头文件安装到/opt/gmp/5.0.2/include。安装库时,将 --PREFIX 标志设置为 /opt/gmp/5.0.2 将自动处理此问题。如果您不设置此标志,则前缀通常默认设置为/usr/local。

  1. Other Linker Flags 看起来不错,应该是库的名称。
  2. 将标头搜索路径设置为包含目录,在我的例子中为/opt/gmp/5.0.2/include。
  3. 将 Library Search Path 设置为 lib 目录,在我的例子中为 /opt/gmp/5.0.2/lib。

由于已经设置了标头搜索路径,您现在应该可以像这样包含头文件了:

#include <gmp.h>

当然,将/opt/gmp/5.0.2替换为你安装gmp时使用的PREFIX路径。

最后,您通常不会将库安装到/usr/local/bin,而是安装到/usr/local,然后将任何二进制文件安装到 bin 中,而将此类库安装到 lib 中。当然,任何路径方案都可以,我通常推荐/opt/&lt;project-name&gt;/&lt;version-number&gt;,因为它可以让我更好地跟踪我已安装的内容并拥有相同库和工具的多个版本,而无需处理冲突。

【讨论】:

  • ...构建成功!!我对库和链接器的了解比五分钟前要多得多。我已将所有库安装到它们自己的文件夹中,并且在 Xcode 中分配正确的链接器标志时,每个库似乎都运行良好。非常感谢!
  • 嘿! GMP 对您有用吗?对我来说,一个简单的划分就是问题:stackoverflow.com/questions/11037165/…
  • 请问如何安装 gmp 库,我需要从哪里下载?你能给我步骤吗?谢谢。
  • 它也适用于我!太感谢了!但奇怪的是我已经将 gmp 安装到了/usr/local/。我仍然需要添加 /usr/local/include 和 /usr/local/lib 。这很奇怪?
【解决方案2】:

我已将我的系统从 snow leopard 更新为 mountain lion,并且必须安装 gmp。

首先我已经安装了Xcode CommandLineTools set。

其次,安装Homebrew。然后用它我已经完成了这个主题的步骤:https://apple.stackexchange.com/questions/38222/how-do-i-install-gcc-via-homebrew

在我的最后一步中,正如同事 Marcus Karlsson 所说,对一个 xcode 项目进行了更改。 它终于起作用了!非常感谢你:)

【讨论】:

  • 您能解释一下这些步骤,或者至少在这里总结一下吗?如果链接断开,则此答案将失去大部分价值。
猜你喜欢
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 2010-10-12
  • 2010-10-01
  • 2011-09-22
  • 2020-05-07
  • 1970-01-01
  • 2011-09-01
相关资源
最近更新 更多