命令行下编译与运行简单的OC程序

news2024/11/26 5:22:39

学习OC的语法建议还是用普通的编辑器写OC代码,然后在终端命令行下编译与运行。那我们来看一下是如何在命令行下编译一个OC源文件,以及运行编译后的可执行文件的

开发环境

操作系统:macOS Big Sur
终端:iTerm2 Build 3.4.8
clong: Apple clang version 13.0.0 (clang-1300.0.29.3)
编辑器:Atom : 1.60.0

操作示例

cc与clang

他们是同一个命令,cc只是能少输入几个字符而于
在这里插入图片描述

编译链接

在当前目标下创建一个Hello.mm文件,并用atom打开该文件

pwd
/Users/luogw/temp/test
touch Hello.m

在这里插入图片描述
Hello.m的内容如下

#import <Foundation/Foundation.h>

int main(int argc, char * argv[]) {
	NSString * str = @"Hello, OC";
	NSLog(@"%@", str);
	return 0;
}

编译加链接,生成可执行文件

cc  Hello.m -framework Foundation
// framework 是指定链接库,我们使用了NSLog还有NSString,它们是Foundation库中定义的

默认生成的可执行文件是a.out
在这里插入图片描述

仅仅编译

cc -c oc代码文件

加-c即只编译源代码文件,输出中间态的目标文件,如下所示
在这里插入图片描述

自定义类

使用自定义类的示例


#import <Foundation/Foundation.h>

//声明类
@interface Person : NSObject
{
}
@property(nonatomic, retain) NSString * name;
@property int age;
- (void) printInfo;
@end

//定义类
@implementation Person {
}
- (void) printInfo {
	NSLog(@"My name is %@, %d years old", _name, _age);
}
@end

int main(int argc, char * argv[]) {
	NSString * str = @"Hello, OC";
	NSLog(@"%@", str);

  Person *p = [[Person alloc]init];
	p.name = @"Eric";
	p.age  = 36;
	[p printInfo];
	return 0;
}

编译运行结果如下
在这里插入图片描述

man cc

man cc
//查看clang的具体说明/帮忙文档

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/52119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基础知识与实操-篇五:bash使用进阶

通过上篇 篇四:初识bash与配置 的学习&#xff0c;已经基本认识了Linux下bash工具的使用和配置&#xff0c;下面将讲解过多关于bash在其他地方的使用。 终端机的环境设置 stty -a 命令可以得到 目前环境中 所有的 按键列表&#xff0c;其中 ^ 表示的是 ctrl 按键&#xff0c;…

原来电商企业也能运用模型规划设计营销活动

营销推广是电商重要的运营组成。电商平台要发起一场综合性的推广活动&#xff0c;需要明确参与活动的商品范围、促销价格、推广渠道以及如何触达到消费者等。很多营销推广活动规则复杂且不断变化&#xff0c;就需要使用模型来设计&#xff0c;例如邀人砍一刀的“免费提现”、多…

[附源码]Python计算机毕业设计Django高校学生宿舍管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【人工智能】知识图谱

文章目录一、知识图谱的概况二、知识图谱的基本概念三、知识图谱构建技术四、知识图谱主要应用四、知识图谱主要应用一、知识图谱的概况 知识&#xff08;Knowledge&#xff09;&#xff1a;合理性&#xff08;Justified&#xff09;、真实性&#xff08;True&#xff09;、被…

B轮融资背后:未势能源在万亿“长坡”上,铺出三重“厚雪”

今年以来&#xff0c;氢能源行业爆发出强劲的资本热潮。 川财证券分析称&#xff0c;我国氢能领域已完成35起投融资事件&#xff0c;总金额超过63亿元。另外&#xff0c;在A股市场&#xff0c;今年以来就有东华能源、粤水电等上市公司宣布涉足氢能。11月30日&#xff0c;专注氢…

汇川伺服电机位置控制模式QT程序Demo实现

0.实现效果 1.工程文件 #------------------------------------------------- # # Project created by QtCreator 2022-11-30T09:37:26 # #-------------------------------------------------QT core gui QT serialportgreaterThan(QT_MAJOR_VERSION, 4): QT …

JAVA实现数组模拟队列

队列本身是有序列表&#xff0c;若使用数组的结构来存储队列的数据&#xff0c;则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理&#xff0c;因此需要两个变量 front及 rear分别记录队列前后端的下标&#xff0c;front 会…

RepVGG论文理解与代码分析

最近&#xff0c;看到很多轻量化工作是基于RepVGG改进而来&#xff0c;决定重新回顾一下RepVGG&#xff0c;并在此记录一些理解与心得。 论文地址&#xff1a;https://arxiv.org/abs/2101.03697 Introduction RepVGG通过结构重参数化思想&#xff0c;让训练网络的多路结构(多…

[附源码]JAVA毕业设计-高中辅助教学系统-(系统+LW)

[附源码]JAVA毕业设计-高中辅助教学系统-&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

[附源码]Python计算机毕业设计Django电商小程序

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

「湖仓一体」释放全量数据价值!巨杉数据库亮相2022沙丘大会

近日&#xff0c;由数字化研究与知识服务平台沙丘社区主办的2022沙丘大会成功举办&#xff0c;巨杉数据库受邀出席大会&#xff0c;并在湖仓一体专场进行《湖仓一体释放全量数据价值》的主题演讲。 近日&#xff0c;由数字化研究与知识服务平台沙丘社区主办的2022沙丘大会以线上…

低代码开发平台助力生产管理:采购成本管理的优化

采购是企业经营活动中的重要环节&#xff0c;它处于企业生产经营活动的最前端&#xff0c;同时也是成本费用中占较大比重的环节。采购成本主要是指企业在生产过程中用于采购产品及服务等交易活动所产生的一系列支出&#xff0c;包括物资的购买价格、税费、运输费等&#xff0c;…

X电容和Y电容

X电容和Y电容 1安规电容 安规电容之所以称之为安规&#xff0c;它是指用于这样的场合&#xff1a;即电容器失效后&#xff0c;不会导致电击&#xff0c;也不危及人身安全。安规电容包含X电容和Y电容两种&#xff0c;它普通电容不一样的是&#xff0c;普通电容即使在外部电源断…

从0到1 Webpack搭建Vue3开发、生产环境

起步 创建项目目录 mkdir webpack-vue3-demo初始化 package.json npm init -y参考文档 安装 webpack webpack-cli webpack-dev-server webpack-merge npm install webpack webpack-cli webpack-dev-server webpack-merge --save-dev创建配置文件 mkdir build cd build …

vscode配置git和c++

vscode配置git和cvscode配置c1.必要配置2.可选配置配置git1.命令行使用git2.IDE使用git3.一点补充过滤文件设置别名之前一直在用vscodepython做实验&#xff0c;现在想利用vscode复习下c和git顺便做做力扣。vscode配置c 1.必要配置 由于vscode只是个编辑器&#xff0c;所以首…

JVM之运行时数据区 面试相关

JVM创建对象的方式创建对象的步骤内存布局对象访问定位![请添加图片描述](https://img-blog.csdnimg.cn/fa106bd4936440b28e1c359d57ba4d25.png)直接内存创建对象的方式 new 常见方式 Xxx静态方法 XxxBuilder/XxxFactory的静态方法Class的newInstance() 反射&#xff0c;只能空…

魔兽世界开服架设服务器搭建教程

魔兽世界开服架设服务器搭建教程 准备工具&#xff1a; 1、装有windows98/2000/xp/2003系统、内存至少256M的电脑一台 2、魔兽服务器端一个 3、服务器一台&#xff08;魔兽世界对服务器的配置要求并不是很高&#xff0c;CPU 16核 、16线程 带宽最好是选择50M的&#xff0c;游戏…

美食杰项目 -- 发布菜谱(七)

目录前言&#xff1a;具体实现思路&#xff1a;步骤&#xff1a;1. 展示美食杰发布菜谱页效果2. 引入element-ui3. 代码总结&#xff1a;前言&#xff1a; 本文给大家讲解&#xff0c;美食杰项目中 实现发布菜谱页的效果&#xff0c;和具体代码。 具体实现思路&#xff1a; 按…

骑行运动耳机哪个好,列举五款适合在骑行过程中佩戴的耳机

谈起耳机&#xff0c;人们第一印象应该是传统的入耳式耳机&#xff0c;这种耳机在音质以及体积上确实占据了一定的优势&#xff0c;但还是存在着不少的缺点&#xff0c;特别是佩戴的过程中会让我们的耳道保持堵塞状态&#xff0c;导致中耳炎等疾病的频频发生&#xff0c;而这两…

ASEMI-KBL410是什么元器件,kbl410整流桥参数

编辑-Z 俗话说&#xff0c;时势造英雄&#xff0c;整流桥大军中有一款整流桥KBL410有哪些你所不知道的&#xff1f;KBL410是什么元器件&#xff1f;kbl410整流桥参数是多少&#xff1f; KBL410参数描述 型号&#xff1a;KBL410 封装&#xff1a;KBL-4 电性参数&#xff1a;…