使用 clang 在命令行上编译多个 Objective-C 文件

2024-03-18

希望是简单的问题。我正在尝试使用 clang 从命令行学习基本的 Objective-C 编译。我知道 Xcode 对于复杂的项目来说是一个更好的解决方案,我计划很快转向它,但我个人觉得如果我可以在终端中手动编译一门语言,我会更好地理解它,而对于小型的入门性编程项目,我发现它不太适合在终端中编译比启动一个新项目更麻烦。

所以问题是:如何编译一个由多个文件组成的 Objective-C 程序(从命令行)? (我正在尝试执行 Kochan 教科书第 7 章中的分数程序,其中包含 #import“Fraction.h”的 main.m 和 Fraction.m 文件,以及导入 Foundation 框架的 Fraction.h 文件。)要编译单个文件,我使用类似的东西

clang -fobjc-arc main.m -o prog1

但是,如果我输入该内容并且想要在项目中包含 main.m 以外的文件,则会收到错误,包括:

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果我尝试将附加文件作为参数添加到命令中,例如

clang -fobjc-arc main.m Fraction.h Fraction.m -o prog1

然后我得到

clang: error: cannot specify -o when generating multiple output files

如果我然后删除 -o 参数,例如

clang -fobjc-arc main.m Fraction.h Fraction.m

然后我得到一大堆错误,所有错误都涉及基础框架,最终以“致命错误:发出太多错误,立即停止”结束。

我该如何做到这一点并使其发挥作用?或者我是否需要忍受它并在涉及多个文件时立即使用 Xcode?


仅编译实现文件 (*.m),而不编译接口/包含文件,因此这应该有效:

clang -fobjc-arc main.m Fraction.m -o prog1

奇怪的错误消息“生成多个输出文件”可能是由以下事实引起的 clang 还可以将头文件编译为“预编译头文件”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 clang 在命令行上编译多个 Objective-C 文件 的相关文章

随机推荐

  • C++ 输入运算符重载

    我正在尝试重载我创建的 UserLogin 类上的输入运算符 不会引发编译时错误 但也不会设置值 一切都在运行 但 ul 的内容仍然存在 字符串 id 是 sally 登录时间为00 00 注销时间为 00 00 入口点 include
  • 如何使 videojs 标记可滑动或可移动

    我想移动我的markers每当它随着搜索一起滑动时 我希望我的标记准确无误slidable as jqueryui 滑块 问题 我想要我的markers 两者 一样可滑动jqueryui range滑块如以下示例中的视频所示 var pla
  • Retrofit+OkHttp 发送 GET 请求时可以,但发送 POST 时给出 SocketTimetout

    我从 Retrofit 开始 可以成功执行 GET 请求 但是当我尝试执行 POST 或 PUT 请求时 出现 SocketTimeOut 异常 我根据以下内容将 OkHttp 添加到我的 libs 文件夹中这个问题 https stack
  • @JsonInclude(Ininclude.NON_NULL) 未按预期工作

    我已经添加了 JsonInclude Include NON NULL Response 类上的注释 JsonInclude Include NON NULL public class Response JsonProperty priva
  • Nuxt - 将脚本添加到头部和主体

    我正在尝试在我的 Nuxt 应用程序中使用此脚本 但不知道如何操作 在基本的 HTML 文件中 它工作得很好 这是代码
  • Hibernate Envers 修订信息(更改列表)

    我想在我的项目中添加修订更改列表 单击信息图标 例如 Revision X added fieldA entry modified fieladB from B to BB removed fieldC entry 哪个是最好的方法 ps
  • Xcode 连接到 MS SQL 数据库

    我有一个现有数据库已在远程启动并运行MS SQL server 并且我希望能够与该数据库进行通信和交互Xcode 我正在写一份申请OS X in Swift以及应用程序应使用的数据存储在该远程数据库中 问题是我好像找不到Swift可以连接到
  • 如何传递 bquote 的符号字符串以在 ggplot 中求值?

    我在函数中创建的 ggplot 的轴标签有所不同 有些标签有上标 下标 而另一些则没有 例子 m data lt data frame x runif 10 y runif 10 x labs lt c rain mm light W m
  • array_walk 匿名函数

    有没有办法让我用匿名函数来获取这个数组来设置值 url array dog cat fish array walk url function value key url key str replace dog value echo pre
  • Azure CLI 运行命令使用参数调用 RunPowerShellScript

    我一直在尝试在 Azure VM 上运行一个脚本 该脚本需要像这样传递参数 az vm run command invoke g
  • scikit learn:与 GridSearchCV 兼容的自定义分类器

    我已经实现了自己的分类器 现在我想对其运行网格搜索 但出现以下错误 estimator fit X train y train fit params TypeError fit takes 2 positional arguments bu
  • ASP>net MVC 可重用部分

    在 winforms 和 ASP net 中使用 net 几年后 我现在开始进入 MVC 我知道有点晚了 对我来说 一个主要的困惑是可重用 组件 的概念 类似于网络表单中用户控件的概念 例如 我希望在我的网站的会员区域内有许多 小部件 其中
  • OpenCL 内置函数“选择”

    我不清楚内置 OpenCL 函数的目的是什么select 有人可以澄清一下吗 来自 OpenCL 规范 功能选择 基因型a 基因型b 基因型c 返回 对于向量类型的每个分量 结果 i 如果设置了 c i 的 MSB b i a i 在这种情
  • 在 asp.net C# 中使用客户端 ID 和客户端密钥访问 Sharepoint 列表

    目前 我可以使用用户 ID 和密码访问共享点列表 如下所示 但想了解如何使用客户端 ID 和客户端密码访问列表 string siteUrl https xyz sharepoint com sites MyList ClientConte
  • VBA 运行时错误 3134

    以下代码创建一个 SQL 字符串 该字符串在 MS Access 中产生语法错误 3134 sql INSERT INTO tblItems desc descExtended itemNumber currentPrice VALUES
  • Spring Security 加密 MD5

    我有一个使用 spring 框架和 spring security 进行登录的 java web 应用程序 在我的数据库中 我的密码在保存之前已加密为 MD5 我在 application config xml 中添加了这段代码
  • jQuery DataTable - 搜索一列下拉列表

    我有一个简单的 jQuery 数据表 其中包含 4 列 其中一列是下拉列表 table tfoot tr th class searchBox Vendor Location th th class searchBox Currency t
  • RestKit valueTransformer 没有被调用

    我正在使用 RestKit 与我的 JSON 端点对话 端点返回一个以 毫秒数 为单位的 UNIX 时间戳 但是 RestKit 的默认转换器假定它是 秒数 并且我在 NSDate 中得到了错误的值 所以我环顾四周 发现我需要使用自定义 v
  • 在同一请求中创建和更新结构时可能出现的竞争条件 - Coldfusion

    大约一年前 我问了一个关于我在应用程序中遇到的错误的问题 该错误表明可能存在竞争条件 在 ColdFusion 中创建结构体时可能存在竞争条件 https stackoverflow com questions 19859690 possi
  • 使用 clang 在命令行上编译多个 Objective-C 文件

    希望是简单的问题 我正在尝试使用 clang 从命令行学习基本的 Objective C 编译 我知道 Xcode 对于复杂的项目来说是一个更好的解决方案 我计划很快转向它 但我个人觉得如果我可以在终端中手动编译一门语言 我会更好地理解它