如何在Xcode 4中链接库?

3
我对Apple的Xcode完全是个新手,但我已经按照Xcode文档和一些相关问题的建议尝试过了,但均未成功。
我将GMP安装到/usr/local/bin中,使用该库编写了一个简短的程序,并使用gcc main.c -lgmp进行编译。它没有警告或错误,可执行文件也运行得非常顺畅。
我启动了一个新的Xcode项目(命令行工具;类型:C),将代码复制到新创建的main.c中,并打开了项目构建设置。从那里,我将链接 > 其他链接器标志设置为-lgmp,将搜索路径 > 库搜索路径设置为/usr/local/bin。然而,构建失败并出现预处理器错误“Gmp.h: No such file or directory”。
我尝试了几乎所有可能的头文件: #include "gmp.h" #include <gmp.h> #include "gmp" #include "libgmp.a" . . .
这是我在过去三个月中学习C语言时遇到的主要障碍。如果有任何帮助可以引领我找到解决方案,我将不胜感激。

2个回答

8
您需要在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. Header Search Path设置为包含目录,在我的例子中是/opt/gmp/5.0.2/include
  3. Library Search Path设置为库目录,在我的例子中是/opt/gmp/5.0.2/lib
由于已经设置了头文件搜索路径,因此现在可以像这样包含头文件:
#include <gmp.h>

当然,将/opt/gmp/5.0.2替换为您安装gmp时使用的PREFIX路径。
最后,您通常不会将库安装到/usr/local/bin,而是安装到/usr/local,并让任何二进制文件安装到bin,而像这样的库则会安装到lib中。当然,任何路径方案都可以,我通常推荐/opt/<项目名称>/<版本号>,因为它允许我更好地跟踪我安装了什么,而无需处理冲突即可拥有多个版本的相同库和工具。

构建成功了!我现在对库和链接器的了解比五分钟前多得多。我已经将所有的库安装到它们自己的文件夹中,每一个在Xcode中分配正确的链接器标志时似乎都能完美地工作。非常感谢你! - Vortico
嘿!GMP 对你有用吗?对我来说,一个简单的除法就是个问题:http://stackoverflow.com/questions/11037165/which-library-should-i-use-on-osx-for-arbitrary-precision-arithmetic - János
请问如何安装GMP库,并从哪里下载?能否给我步骤?谢谢。 - Nitesh Meshram
我也试过了,它可以工作!非常感谢!但奇怪的是,我已经将gmp安装到/usr/local/中。我仍然需要添加/usr/local/include/usr/local/lib。这很奇怪? - Timothy Leung

2

你能否请解释一下这些步骤,或者至少在这里概括一下?如果链接失效,这个答案就会失去大部分价值。 - Tim Post

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接