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

学习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的具体说明/帮忙文档

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SCHOLAR_II/article/details/128134251