通过命令行在 OS X 上编译简单的 Hello World 程序

Posted

技术标签:

【中文标题】通过命令行在 OS X 上编译简单的 Hello World 程序【英文标题】:Compiling simple Hello World program on OS X via command line 【发布时间】:2011-05-03 15:56:22 【问题描述】:

我有一个简单的 hello world 示例,我正在尝试在 OS X 上编译,名为 hw.cpp

#include <iostream>
#include <string>
using namespace std;
int main() 
  cout << "Hello world!" << endl;
  return 0;

我想使用gcc 编译它,但我没有成功。我还想听听其他选项,比如使用 Xcode 吗?

【问题讨论】:

“没有成功”并不能真正帮助任何人诊断您的问题。 【参考方案1】:

试试

g++ hw.cpp
./a.out

g++ 是 GCC 的 C++ 编译器前端。gcc 是 GCC 的 C 编译器前端。

是的,Xcode 绝对是一个选择。它是一个基于 GCC 构建的 GUI IDE。

虽然我更喜欢稍微冗长的方法:

#include <iostream>

int main()

    std::cout << "Hello world!" << std::endl;

【讨论】:

@math: return 0 隐含在 main 中。 @mathepic: 和 +1。在 C++ 中不需要它。如果main 到达函数末尾而没有返回,那么它会隐式返回 0。 啊,好吧。为了清楚起见,我仍然会使用它。 @mathepic:这是 1 个意见。我个人觉得不使用它更清楚。 为什么是a.out?在 Windows 中,我希望看到 a.exe。在 *nix 中我们不需要扩展。为什么使用 .out 而不是扩展名? a 也是一个奇怪的默认名称。【参考方案2】:
g++ hw.cpp -o hw
./hw

【讨论】:

在所有其他的中,这个对我来说效果很好。谢谢。 使用默认 g++ 设置在 mac 上为我工作。我必须传递 -o 文件参数。【参考方案3】:
user@host> g++ hw.cpp
user@host> ./a.out

【讨论】:

【参考方案4】:

gcc 编译它需要你传递一些命令行选项。改为使用g++ 编译它。

【讨论】:

【参考方案5】:

此外,您可以使用 CLion (JetBrains) 之类的 IDE 或 Atom 之类的文本编辑器,以及 gpp-compiler 插件,就像一个魅力(F5 编译和执行)。

【讨论】:

【参考方案6】:

新版本应该是这样的:

xcrun g++ hw.cpp
./a.out

【讨论】:

这给了我ld: can't link with a main executable file './a.out' for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) @Rat-a-tat-a-tat 抱歉,我不记得了,是 3 年前。【参考方案7】:

您没有指定您看到的错误是什么。

问题是gcc 给您一个错误,还是您根本无法运行gcc

如果是后者,最可能的解释是你在安装开发工具的时候没有勾选“UNIX Development Support”,所以你的路径中没有安装命令行可执行文件。重新安装开发工具,并确保单击“自定义”并选中该框。

【讨论】:

【参考方案8】:

对多个 .cpp 文件使用以下内容

g++ *.cpp
./a.out

【讨论】:

以上是关于通过命令行在 OS X 上编译简单的 Hello World 程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Mac OS X Mountain Lion 上编译 libnoise

如何使用 GCC-MP-4.7 在 OS X 上编译 ASL?

C++ 在 Mac OS X 上编译代码并在 Linux x86 上运行

使用命令行在 Visual Studio 中编译为发行版

在Windows 10的命令行上编译一个本地C++程序

在 mac os 上编译 dlib