objective-c - 将 Objective-C 文件编译成目标文件 (.o)

标签 objective-c gcc

我的任务是在 Xcode 4 中为 iOS 项目创建对象 .o 文件。我尝试了以下适用于 NSObject 类的命令

gcc -c implemtationfile.m

但是如果我尝试在从 UIViewController 继承的类上运行命令,例如我会收到大量以

开头的错误
UIKit/UIKit.h: No such file or directory

其次,由于项目中有多个文件,是否可以为所有源文件创建一个.o文件?

最佳答案

出现错误并不奇怪。

您正在尝试从 OSX 编译 iOS 代码。如果您从终端调用 GCC,您将获得 Mac OS X 编译器。

即使它可以生成 .o 文件,这些目标文件也是 Mach-O 目标文件,这意味着它们是针对 Mac OS X 编译器工具链编译为目标文件的。

这里没有 iOS。您的对象文件将具有 Intel (x86) 或 PPC 架构。 iPhone 是 ARM,所以你浪费了。

您应该能够使用正确的 GCC 编译器工具链处理 ARM 目标文件。

类似于:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.0.1

我没有测试过,但很明显你需要使用 iPhone ARM 版本的 GCC。只要调用 GCC 就会调用 Mac OS X 版本(在/usr/bin/中)。

像 GCC 这样的编译器需要针对主机和目标架构进行编译。

宿主架构是您将在其中调用编译器的架构。 目标是您将为其构建二进制文件或目标文件的体系结构。

因此请尝试使用适合 iPhone 目标架构的正确版本的 GCC 编译您的代码。

另请注意,如果针对框架进行编译,您应该使用 -framework GCC 参数。

关于objective-c - 将 Objective-C 文件编译成目标文件 (.o),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603405/

相关文章:

ios - NSFetchRequest 和 NSPredicate,数组比较和匹配

objective-c - 如何在我的应用程序中的 iOS 键盘上创建自定义按钮?

gcc - CentOS 6 产生奇怪的链接错误

c++ - Linux 上 X11 图形库的声明问题

c - gcc 自动更正 printf 中的格式

iphone - 以编程方式设置 ipad 应用程序背景?

iphone - 推送通知设备 token ?

c - 编译一个模块与所有模块的 Makefile 条件

iphone - 呈现带有动画效果的模态视图

c++ - 创建依赖于其他共享对象的共享对象