`
lin_llx
  • 浏览: 127264 次
  • 性别: 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博客?

相关推荐

    Windows7下编译运行Objective-C

    在压缩包`win7objectivec`中,可能包含了编译Objective-C在Windows 7上所需的一些资源、示例代码或者教程文档。如果你遇到任何问题,如编译错误或找不到库,查看这些资源通常能提供帮助。同时,确保你的系统满足所有...

    windows 下搭建 Objective-C 开发环境

    2. **编译代码**:在命令行界面中输入`sh gcc.sh helloWorld helloWorld.m`即可快速编译Objective-C代码。 通过上述步骤,您已经在Windows系统下成功搭建了一个Objective-C开发环境。接下来,您可以开始探索...

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

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

    学习Objective-C--第一天.doc

    - 使用 GCC 编译 Objective-C 代码通常涉及 `gcc` 或 `clang` 命令,加上源文件名和编译选项,例如:`gcc -o program program.m`,这将生成名为 "program" 的可执行文件。 4. **终端基础** - 终端对于开发者来说...

    Objective-C&UIKit自学笔记

    在终端中,可以使用`gcc`命令编译Objective-C程序,同时链接Foundation框架,例如`gcc -framework Foundation HelloWorld.m -o xxx`。 在Objective-C中定义类,通常包含`.h`头文件和`.m`实现文件。方法类型分为实例...

    Objective-C HelloWorld! 程序案例

    要编译和运行Objective-C程序,需要使用Objective-C编译器。在大多数情况下,使用的是Apple LLVM编译器。下面是一个典型的编译和运行步骤: 1. **保存文件**:首先将上述代码保存为一个`.m`文件,例如`HelloWorld.m...

    windows平台搭建Objective-C环境

    4. **编写并编译Objective-C代码**: - 在这个目录下,创建一个名为hello.m的文件,并输入基本的Objective-C代码,例如打印“Hello, World!”。 - 使用Shell中的命令行工具(如vim或简单的文本编辑器)创建和编辑...

    基于Objective-C的软件开发方法探讨

    无论是创建简单的命令行工具还是复杂的图形界面应用程序,Objective-C都能提供强大的支持。随着不断深入学习和实践,开发者将能够掌握更多高级特性和技术,进一步提高开发效率和应用程序的质量。

    Objective-C Recipes - A Problem-Solution Approach

    **问题描述**:你想使用终端构建一个简单的Objective-C程序,该程序不依赖于Xcode提供的额外特性。你的程序将使用Objective-C向Mac的终端控制台窗口输出一条消息。 **解决方案**: 1. 使用你喜欢的文本编辑器(如vi...

    011.基于 Frida 框架的 Objective-C 插桩方法 Objective-C Instrumentation wi

    Objective-C 是苹果生态系统中广泛使用的编程语言,用于开发 iOS 和 macOS 应用程序。插桩(Instrumentation)是软件开发过程中的一个重要概念,它允许我们插入额外的代码来监控或修改程序的行为,而不改变原始代码...

    Windows下的Objective-C集成开发环境(IDE)的搭建 (一)

    现在你已经准备好了编辑、编译和运行Objective-C程序的环境。在Code::Blocks中创建一个新的Objective-C源文件,写入你的代码,然后点击"Build and Run"进行测试。 通过以上步骤,你将在Windows上成功搭建了一个...

    Windows下进行Objective-c开发.docx

    安装完毕后,你可以从开始菜单启动GNUstep的shell程序,这是一个命令行窗口,可以在这里编写和编译Objective-C代码。 为了验证环境是否正常,我们可以编写一个经典的“Hello, World!”程序。在shell或任何文本编辑...

    objective-c 编程(第3版)

    - **Xcode**:Xcode是Objective-C开发的主要集成开发环境(IDE),包含了编写、编译和调试Objective-C程序所需的所有工具。 - **模拟器与真机测试**:为了确保应用程序的质量,本书还介绍了如何使用模拟器进行初步...

    WINDOWS编译object c 的工具库(二)

    标题“WINDOWS编译Objective C的工具库(二)”表明这是一个系列教程的第二部分,主要关注在Windows系统中编译Objective-C程序所需的工具和步骤。在这一部分中,我们可能会深入探讨一个名为gnustep的开源项目,它为...

    Objective-C的语法与Cocoa框架

    3. **创建和编译 Objective-C 代码**:使用 vi 或其他编辑器创建 Objective-C 文件,然后通过 GCC 编译器进行编译。编译命令如下: ```bash gcc -o hello.exe hello.m \ -I /GNUstep/System/Library/Headers \ -...

Global site tag (gtag.js) - Google Analytics