Objective-C学习备忘录:Clang编译器编译运行Objective-C代码
我们都知道可以通过Apple公司的Xcode工具来学习Objective-C编程语言,但是能不能脱离XCode这个IDE进行Objective-C学习呢?当然是可以的。
首先作为计算机科班出身的程序员都应该知道任何一门编程语言都离不开编译器,OC也不例外,我们可以通过度娘搜索发现,XCode的默认编译器是clang,那么问题来了,我能不能通过clang命令直接编译并运行一段OC代码呢?当然是可以的。
注意:关于XCode编译器详细介绍可以参考该文章:编译器
下面将叙述一下如何通过Mac OS中文本编辑器创建一个Hello Word的程序,并通过clang命令编译运行。
1.打开“文本编辑”工具,输入以下代码,并保存为纯文本格式,文件名命名为helloword.m,路径随意放:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[])
{
@autoreleasepool
{
NSLog(@"Hello, OC!");
} return ;
}
2.接下来可以利用“终端”将helloword.m文件编译成可执行文件了,具体步骤:打开“终端”、通过cd命令进入helloword.m文件所在目录、使用clang命令对helloword.m文件进行编译,最后生成helloword可执行文件,如下图所示。
$ clang -fobjc-arc -framework Foundation HelloWord.m -o HelloWord
有几个地方需要注意一下:
- $符号是终端命令提示符,不是需要输入的内容;
- -fobjc-arc表示编译器需要支持ARC特性;
- -framework Foundation表示引用Foundation框架;
- HelloWord.m为需要进行编译的源代码文件;
- -o HelloWord表示输出的可执行文件的文件名;
3.生成可执行文件后,就可以在终端中执行该文件了,输入的命令如下:
$ ./HelloWord
执行结果如下图:
另外也可以直接双击运行刚才生成的HelloWord可执行文件,运行结果和上面运行结果一样。
至此通过几个简单的clang命令,就可以编译运行一段简单的Objective-C代码了。
Objective-C学习备忘录:Clang编译器编译运行Objective-C代码的更多相关文章
- 使用Maven编译运行Storm入门代码(Storm starter)(转)
Storm 官方提供了入门代码(Storm starter),即 Storm安装教程 中所运行的实例(storm-starter-topologies-0.9.6.jar),该入门代码位于 /usr/ ...
- QT在Mac OS上编译运行初体验
QT是一个跨平台的框架,支持PC端(Windows.Linux和Mac OS)以及移动端(Android和IOS),之前的开发大都在Windows或者Ubuntu上,考虑到项目多平台支持性,本文对Ma ...
- Lua 学习笔记(七)编译、执行外部代码块
Lua称为解释型语言的原因:Lua允许在运行源代码之前,先将源代码预编译为一种中间形式.区别解释型语言的主要特征是在于编译器是否是语言运行时库的一部分,即有能力执行动态生成的代码.因为Lua中有dof ...
- NDK clang编译器的一个bug
NDK clang编译器的一个bug 问题代码 float32_t Sum_float(float32_t *data, const int count) { float32x4_t res = vd ...
- objective-c 创建工程/编译/运行程序
// First program example #import <Foundation/Foundation.h> int main (int argc, const char * ar ...
- Java学习笔记5---命令行下用javac,java编译运行含package语句的类
对于笔记3中的HelloWorld程序,编译时只要输入javac HelloWorld.java即可生成类文件:再用java HelloWorld即可运行. 如果源程序使用了包声明,编译运行时要使用某 ...
- 编译运行第一个Java程序——通过示例学习Java编程3
作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=13 在本教程中,我们将了解如何编写.编译和运行Ja ...
- 【学习笔记】比特(bit)、字,字节(B)存储单位之间的关系+其与操作系统位数的关系+不同编译器编译方式下数据类型的表示范围
1.在表示网络传输速度中与表示存储单位的不同: 表示存储单位时:1kB=1024B,但在网络中表示传输速度是1KB=1000B 2.下面介绍表示存储单位时的关系及其与操作系统位数的关系: 1B=8bi ...
- 转:GCC,LLVM,Clang编译器对比
GCC,LLVM,Clang编译器对比 转自: http://www.cnblogs.com/qoakzmxncb/archive/2013/04/18/3029105.html 在XCode中, ...
随机推荐
- Kali Linux Web 渗透测试视频教程— 第七课 OpenVas
Kali Linux Web 渗透测试视频教程— 第七课 OpenVas 文/玄魂 视频教程地址:http://edu.51cto.com/course/course_id-1887.html 目录 ...
- Kali linux系列之 zmap 安装
Kali linux系列之 zmap 安装 官方文档地址:https://zmap.io/ 准备:保证有比较顺畅的更新源,可以更新系统,下载安装包. 安装 第一步:sudo apt-get insta ...
- ASP.NET MVC请求处理管道生命周期的19个关键环节(7-12)
在上一篇"ASP.NET MVC请求处理管道生命周期的19个关键环节(1-6) ",体验了1-6关键环节,本篇继续. ⑦根据IsapiWorkerRequest对象,HttpRun ...
- 3.SRS文档
1.功能需求 本程序的使用者为局域网用户.程序实现的主要功能是局域网的常见格式的文件的传 输.其用例图如图1.本程序可通过可视化操作界面实现一对多的文件传输. 1.1模块分析 为实现局域网文件传输, ...
- 倔强的网站数据抓取,关键时刻还需Webbrowser显身手
由于最近台风挺多,公司网站上需要挂上台风预报信息,就整了个抓取台风数据(至于抓数据的概念和实践手册我以前写的一篇博客里面有介绍:分享一套抓数据小程序,客户资料.实时新闻.股票数据…随心抓)的服务,做调 ...
- BUILD 2015: Visual Studio对GitHub的支持
微软BUILD 2015大会上发布了Visual Studio 对GitHub的支持.安装了如下Developer Assistant插件后,你便可以在Visual Studio中找到GitHub上的 ...
- inline-block使标签间出现空白
HTML Markup <ul> <li>item1</li> <li>item2</li> <li>item3</li& ...
- android mvvm初探
目前google的databinding library还处在rc版,其中编译器发挥了主要作用.目前也只是在android studio开发环境中支持. mvvm能够大大降低模块间的耦合度,在开发过程 ...
- 从MySQL 5.5到5.7看复制的演进
概要:MySQL 5.5 支持单线程模式复制,MySQL 5.6 支持库级别的并行复制,MySQL 5.7 支持事务级别并行复制.结合这个主线我们可以来分析一下MySQL以及社区发展的一个前因后果. ...
- js系列(9)js的运用(一)
本节开始介绍javascript在html页面中的运用. (1)link样式表的动态绑定:(http://files.cnblogs.com/files/MenAngel/text04 ...