c - 如何在 Mac 上使用 C 文件创建 Unix Executive 文件

标签 c macos

我使用 Sublime 3 进行 C 编程。 如果我在终端中使用 gcc 编译 C 文件,它将生成一个扩展名为 .out 的可执行文件。但我无法通过双击运行它。如果我在 Sublime 中编译它,我将得到一个 Unix 可执行文件。所以我的问题是为什么 Sublime 中的编译器可以创建 Unix 可执行文件,而终端却不能?

最佳答案

假设您有以下 C 源文件:

$ cat hello.c
#include <stdio.h>

int
main (void)
{
  printf ("Hello, world!\n");
  return 0;
}   // from 'An Intro to GCC'

您可以使用 gcc 将其编译为可执行文件,如下所示:

$ gcc -Wall hello.c -o hello

如果您现在输入路径和命令名称,它将运行:

$ ./hello
Hello, world!

如果您转到 Finder 并双击该文件,它将在新的终端窗口中运行。

但是,如果您这样做:

$ gcc -Wall hello.c -o hello.out

现在在终端中运行:

$ ./hello.out
Hello, world!

看起来不错,但如果您在 Finder 中双击该文件,则会收到错误消息,因为 .out 文件与终端没有 Finder 关联。

如果您想创建一个 C 文件并编译成支持在 Finder 中双击的文件(通过在终端中打开它),您有三个简单的选择:

  1. 在 Finder 中将文件 xx.out 重命名为 xx。它会询问您是否确定,但一旦您确定,它应该可以双击;
  2. 重新配置 Sublime,使其不使用 gccC 文件的 .out 扩展名;
  3. 创建 application bundle (本质上是一个文件夹,具有以可配置方式执行其中文件的双击操作)使用 Apple 工具或类似 Platypus 的工具.

可以 associate使用终端的 .out 文件。我不建议这样做,原因有几个——主要是文件现在可以在您的计算机上运行,​​但不能在其他配置不相似的 OS X 系统上运行。

祝你好运。

关于c - 如何在 Mac 上使用 C 文件创建 Unix Executive 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42940835/

相关文章:

swift - 使用 Swift 在 Mac 上显示通知横幅

c++ - 如何强制将常量 C 表达式求值用作 .S 文件中的常量?

c - YUV 422 , YUV 420 , YUV 444

在 C 中将 double 转换为 void*

objective-c - 应用程序包之外的应用程序引用框架

ios - 配置文件不包括com.apple.application-identifier和com.apple.developer.aps-environment权利

c - 如何修复第 15 行 : error: expected expression before 'else'

C错误C2660 : 'Menu' : function does not take 3 arguments

ios - iTunes查找所有屏幕截图版本?

ios - 使用 gem 安装 cocoapods 时出错