使用 gcc 链接 Apple 框架

Posted

技术标签:

【中文标题】使用 gcc 链接 Apple 框架【英文标题】:Linking against Apple frameworks with gcc 【发布时间】:2010-12-19 07:18:06 【问题描述】:

我创建了一些封装与 CoreAudio 一起工作的包装函数,目标是创建一个可以与一些命令行 C++ 工具一起使用的 C 库。到目前为止,事情进展顺利。我获取了一个示例项目,对其进行了修改,然后它在 XCode 中构建和运行。我想完全跳过 XCode 并使用 gcc 和 Makefile 构建库。

如何链接到 Apple 框架?框架只是我可以包含在 gcc 的 -l 和 -L 选项中的共享库吗?

【问题讨论】:

【参考方案1】:

这是一个例子:

gcc -framework CoreServices -o test test.c

来自 Apple 的 gcc (i686-apple-darwin10-gcc-4.2.1) 的手册页:

   In addition to the options listed below, Apple's GCC also accepts and
   passes nearly all of the options defined by the linker ld and by the
   library tool libtool.  Common options include -framework, -dynamic,
   -bundle, -flat_namespace, and so forth.  See the ld and libtool man
   pages for further details.

来自 ld 的手册页:

 -framework name[,suffix]
             This option tells the linker to search for `name.frame-
             work/name' the framework search path.  If the optional suffix
             is specified the framework is first searched for the name
             with the suffix and then without (e.g. look for `name.frame-
             work/name_suffix' first, if not there try `name.frame-
             work/name').

【讨论】:

那么在 Mac OS 上链接 -framework 和链接 -l 的区别是搜索路径对吗?

以上是关于使用 gcc 链接 Apple 框架的主要内容,如果未能解决你的问题,请参考以下文章

Apple Mach-O 链接器警告 - 框架搜索路径?

使用 GCC 创建静态链接的可执行文件

GCC强制静态库链接未使用的函数变量

Apple Framework ISA Classicifications

Apple Mach-O 链接器错误解析

FacebookLoginSKK 4 Apple Mach-O链接器错误