`
lin_llx
  • 浏览: 125527 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用命令行编译Objective-C程序

阅读更多

最近在看Objc的开发,虽然Xcode很好用,但是还是不太习惯这种大型的IDE开发。 于是自己尝试着在Terminal下面编译。 先是最简单的一段程序。

#import <Foundation/Foundation.h>

int main(int argc, const char *argv[])
{
    NSLog(@"Hello, World!");
    return 0;

}

 

直接 gcc helloworld.m,报错。

错误提示如下

 

Undefined symbols:
  "___CFConstantStringClassReference", referenced from:
      cfstring=Hello, World! in ccCxrkF8.o
  "_NSLog", referenced from:
      _main in ccCxrkF8.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
 

 

猜测也许没有加载库,于是换用gcc hellowld.m -lobjc编译,依然是同样的错误。

 

猜测可能lib的位置不对,于是find了一下“Foundation”这个framework的位置,用以下命令编译:

 

gcc helloworld.m -L/System/Library/Frameworks/Foundation.framework/

 

还是一样的错误。

 

无奈之下man gcc从头看到尾。又去google了一下gcc for macosx。发现有一个-framework的选项。尝试了一下。

 

gcc helloworld.m -framework Foundation

 

终于成功了。

 

2010-04-22 19:11:11.643 a.out[8932:903] Hello, World!
 

 

总结一下:macosx下面,objc的系统调用都是集成在framework里面的,要想编译的话,就必须用-framework选项将framework包含进来才行。

1
1
分享到:
评论
3 楼 crackcell 2010-06-26  
lin_llx 写道
crackcell 写道
话说你也主用je博客?

是啊。

我勒个去,,,才发现啊。我一直以为你不写剥壳呢。
2 楼 lin_llx 2010-06-26  
crackcell 写道
话说你也主用je博客?

是啊。
1 楼 crackcell 2010-06-19  
话说你也主用je博客?

相关推荐

    Objective-C2.0程序设计

    第2章 Objective-C程序设计 2.1 编译并运行程序 2.1.1 使用Xcode 2.1.2 使用Terminal 2.2 解释第一个程序 2.3 显示变量的值 2.4 小结 2.5 练习 第3章 类、对象和方法 3.1 到底什么是对象 3.2 实例和方法 3.3 用于...

    一个简单的Objective-C程序示例,它使用Foundation框架来读取用户输入的两个整数,并计算它们的和与乘积

    编译和运行Objective-C程序: 将上述代码保存为main.m文件。 打开Xcode并创建一个新的命令行工具项目。 将main.m文件添加到项目中。 确保项目设置正确无误,特别是编译器和链接器设置。 构建并运行项目。Xcode将...

    Object-C语言教程.docx

    此外,Objective-C也是为苹果iOS和OS X系统编写程序的语言,它能够编译和构建命令行功能、GUI以及领域框架。 Objective-C支持类、对象、继承、封装、多态等面向对象的特性,同时它还具有动态运行时特性,可以在运行...

    使用模拟退火破解 Playfair 密码的程序_Objective-C_代码_下载

    因此,有必要利用有向图(在本程序中为四边形)及其相对于英语的频率来破解...默认情况下,破解程序使用 I/J 组合,但您可以使用命令行参数“-r”替换您选择的任何字母(例如 Q 或 V) 示例:'./crack -r Q &lt; test.txt'

    演示如何在 使用J2ObjC 的 iOS 应用程序中使用 黑白棋游戏引擎的示例_java_Objective-C_代码_下载

    这个 Xcode 项目有一个(非常)简单的用 Objective-C 编写的用户界面,Java 中的游戏引擎文件,以及 一个 用于翻译 Java 文件并在构建期间编译它们的构建规则。 要构建此项目,首先安装 J2ObjC,然后编辑 Settings....

    nib2objc 将XIB文件自动转换为Objective-C的源代码文件

    nib2objc是一个小巧的转换工具,可以将XIB文件自动转换为...使用的时候,首先下载的工程代码并用XCode编译一下,会生成一个命令行程序文件 nib2objc。然后如下所示执行转换 $ nib2objc WebView.xib &gt; WebView.m

    ice-builder-xcode:Shell脚本,可在Xcode中将Slice文件编译为C ++或Objective-C

    Xcode的Ice Builder Ice Builder for Xcode是一个命令行程序,可帮助将Slice文件编译为Xcode中的C ++或Objective-C。 它支持所有最新版本的Xcode。安装自制酒通过运行以下命令,使用Homebrew安装Ice Builder for ...

    GCC技术参考大全

    第 6 章 编译 Objective-C 第 7 章 编译 Fortran 程序 第 8 章 编译 Java 第 9 章 编译 Ada 程序 第 10 章 混合语言 第 11 章 国际化 第 12 章 连接和库 第 13 章 使用 GNU 调试器 第 14 章 make 和 Autoconf 第 15 ...

    爵士乐:Swift和Objective-C的忠实文档

    jazzy是一个命令行实用程序,可为Swift或Objective-C生成文档 关于 Swift和Objective-C项目均受支持。 与解析源文件不同, jazzy钩接到和以使用代码的表示及其注释来获得更准确的结果。 输出与WWDC 2014之后的苹果...

    gcc,g++ GNU C 手册

    .m Objective-C源程序;预处理,编译,汇编 .i 预处理后的C文件;编译,汇编 .ii 预处理后的C++文件;编译,汇编 .s 汇编语言源程序;汇编 .S 汇编语言源程序;预处理,汇编 .h 预处理器文件;通常不出现在命令行上

    biginteger-objc:在 Objective-C 项目中对任意精度整数执行常见操作的类

    如果您的应用程序严重依赖于多精度整数计算,那么使用面向 C 的库(例如 GMP)会更幸运。 但是,如果您只需要一点模算术,或者希望偶尔以最少的开发工作生成一个大素数,那么 BigInteger 类就是为您准备的。 项目...

    GCC资料大全.chm

    .m Objective-C源程序;预处理,编译,汇编 .i 预处理后的C文件;编译,汇编 .ii 预处理后的C++文件;编译,汇编 .s 汇编语言源程序;汇编 .S 汇编语言源程序;预处理,汇编 .h 预处理器文件;通常不出现在命令行上

    GNU GCC 手冊.zip

    .m Objective-C源程序;预处理,编译,汇编 .i 预处理后的C文件;编译,汇编 .ii 预处理后的C++文件;编译,汇编 .s 汇编语言源程序;汇编 .S 汇编语言源程序;预处理,汇编 .h 预处理器文件;通常不出现在命令行上

    Code-Logging-Creator

    Code Logging Creator(clc)是一个命令行实用程序,它读取Objective-C头文件并创建一个由越狱开发工具Theos编译的xm文件和/或与CaptainHook框架一起使用的mm文件。 它编写钩子方法并记录指定类的每个方法。 它可选...

    C编译: 使用gdb调试

     这里主要介绍gdb的命令行使用,并以C程序为例。测试使用的计算机是Mac OS系统。  启动gdb  下面的有两个C文件。(并没有bug。我们使用gdb来查看程序运行的细节)  程序的一个为test.c,其中有

    用于模拟鼠标和键盘事件的macOS CLI工具-Swift开发

    它是用Objective-C编写的,并且可以在OS X 10.6或更高版本上运行。 有关更多信息,请参见cliclick概述cliclick(“命令行界面单击”的简称)是一种用于从外壳程序/终端执行与鼠标和键盘相关的操作的工具。 它是用...

    iOS-Build-Kit::skull_and_crossbones:BuildKit是用于自动化iOS项目构建的模块化命令行界面。 捆绑的构建任务包括:递增应用程序版本•Xcode构建•图标文件上的覆盖版本号•运行单元测试•创建.ipa伪像

    iOS BuildKit BuildKit是用于自动化iOS项目构建的模块化命令行界面。 BuildKit旨在减轻您配置连续集成环境和... 它与带有Objective-C和Swift项目的iOS7和iOS8 SDK兼容。 版本:0.0.6 依存关系 Ruby&gt; 2.0 :BuildKit

    realm

    jazzy是一个命令行实用程序,可为Swift或Objective-C生成文档关于Swift和Objective-C项目均受支持。相反,解析您的源文件, jazzy挂接到和使用代码及其对更准确的结果意见的代表。输出与WWDC 2014之后的Apple官方...

    cliclick:用于模拟鼠标和键盘事件的macOS CLI工具

    它是用Objective-C编写的,并且可以在OS X 10.9或更高版本上运行。 有关更多信息或下载已编译的二进制文件,请查看 作者:CarstenBlüm,网站: 用法 为了快速获得第一印象,这是调用cliclick -h时得到的: ...

Global site tag (gtag.js) - Google Analytics