【问题标题】:Compiling C on macos-catalina在 macos-catalina 上编译 C
【发布时间】:2019-10-27 18:05:36
【问题描述】:

我在 Windows 上开发了一个相当大的 Fortran 程序,它调用一些 C 例程进行字符输入。我还提供了一个用于在各种 Unix 方言和 MacOS 上编译该程序的 makefile。我刚刚将用于测试的 Mac 升级到 Catalina,C 例程的编译失败,它无法找到所有(对我来说)神秘库“sys/ioctl.h”“signal.h”等。这适用于以前MacOS 版 Mojave。

我(在使用 Mojave 时)使用 gcc 安装了 gfortran,并且我有编译器标志 -DBSD 来选择一些必要的 C 系统库。我还有其他适用于 Linux 和 Cygwin 的标志。

我自己不使用 Mac,但我的程序有一些用户使用 Mac,所以我想让他们开心。我应该如何修改我的makefile?

【问题讨论】:

  • 写一个。说真的,您现有的 makefile 在哪里
  • 我认为 makefile 不会有任何不同。但我可能应该问如何编译一个 C 程序 om Catalina。但是,我不知道如何编写 C 程序。在我的 Fotran 程序中,我使用了我在网上找到的函数 getkey.c,它可以读取我在 Linux 和 MacOS 上使用的单个字符以允许命令行编辑。据我所知,没有 Fortran 工具。
  • 引用 - “我应该如何修改我的 makefile?” - 要修改的makefile在哪里?
  • 对我来说,问题是我使用了几年的 makefile 在 MacOS Cataline 上被破坏了。如果我将问题更改为如何编译不是我真正主要兴趣的 C 程序。我发现,如果我编写一个单行 C 程序并尝试编译,我会收到相同的错误消息:警告:没有搜索 stdio.h 的包含路径。那么问题来了,这条路径在新的 MacOS 中哪里消失了?
  • 我显然之前安装了 Xcode,MacOS 没有在更新中根据需要标记它,但经过一番挖掘后,我发现了一个更新,我希望它会起作用。真是一团糟

标签: c macos-catalina


【解决方案1】:

正如我从“无法在 Mac 上编译 C 程序......”的答案中发现的那样,Apple 显然对在 Mac 上拥有除自己的软件之外的任何其他软件不感兴趣。我决定使用 Apple 在我的 Makefile 中提供的 C 编译器,而不是试图理解更改目录结构 /usr/include 和 /usr/local/include 以使用 GCC 的各种选项。因此,只需从“gcc”更改为“cc”并删除 Apple C 编译器中不可用的一些编译器选项,我就设法编译了我的程序。 我想我很幸运只有两个小的 C 例程,尝试编译更复杂的东西需要对 MacOS 的了解比我感兴趣的更多。

【讨论】:

    【解决方案2】:

    我在研究如何为 Catalina 编译旧的 32 位游戏时遇到了这个问题。我还发现 Catalina 删除了 GCC 期望的一些现有 /usr/include 结构,并且有必要创建一些符号链接以及复制一些总体结构以修改标题。

    大部分 GCC 源代码来自 GNU,所以我可能会预料到一些不兼容性,但这可能会帮助遇到这个问题的其他人:https://solarianprogrammer.com/2019/10/12/compiling-gcc-macos/

    存档版本(2019 年 11 月 3 日):http://web.archive.org/web/20191103040729/https://solarianprogrammer.com/2019/10/12/compiling-gcc-macos/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-04
      • 2020-07-28
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 2022-03-04
      • 2020-02-07
      相关资源
      最近更新 更多