4

目前我正在尝试在我的新 Mac 上开始编程。我安装了 TextWrangler,并选择了 C++ 作为我的首选语言;因为我对它有一些先验知识,从我使用 Windows 开始。

所以,我编写了一个非常常见的“Hello World”程序。虽然,当我试图运行它时,我得到了一个错误:

“此文件似乎不包含有效的 'shebang' 行(应用程序错误代码:13304)”

我尝试搜索错误代码以了解如何解决此问题,但我找不到任何东西..我不知道什么是“shebang”行...有人可以帮帮我吗?

4

7 回答 7

5

您需要先使用编译器对其进行编译。我假设您尝试像这样运行源文件,./source但 C++ 不能以这种方式工作。

但是,对于某些编译器,您可以提供shebang-line作为源文件的第一行(#!称为shebangcrunchbang,因此得名),如下所示:

#!/path/to/compiler

这样 shell 就知道使用什么应用程序来运行这种文件,并且当您尝试自己运行源文件时,编译器将为您编译并运行它。不过,这是一个依赖于编译器的功能,所以我建议只使用 G++ 或任何 Mac 用于获取可执行文件的简单编译,然后运行它。

于 2011-08-15T03:27:46.643 回答
2

看起来您正在尝试直接运行源文件,但是您需要使用 C++ 编译器进行编译,例如 gcc(GNU 编译器集合)中包含的编译器,其中包含g++Mac 的 C++ 编译器。它不包含在 Mac 中,您必须先下载它:

来自http://www.tech-recipes.com/rx/726/mac-os-x-install-gcc-compiler/:“要安装 gcc 编译器,请从http://connect.apple 下载 xcode 包。 com/。您需要注册一个 Apple Developer Connection 帐户。注册后,登录并单击“下载软件”,然后单击“开发者工具”。找到 Xcode Tools (version) – CD Image 旁边的“下载”链接并单击它! "

安装完成后,如果您要快速使用 Hello World,则可以从源文件目录中的终端窗口执行命令g++ HelloWorld.cpp -o HelloWorld。然后你应该能够将它作为./HelloWorld.

此外,如果您来自 Visual Studio 世界,您可能想尝试一下 Mono 和 MonoDevelop。Mono 是 C#(和其他语言)的免费实现,而 MonoDevelop 是一个与 Visual Studio 非常相似的 IDE。MonoDevelop 支持 C# 和其他 .NET 语言,包括 Visual Basic .NET,以及 C/C++ 开发。我没有广泛使用它,但它似乎与 VS 非常相似,因此您不必在一天内学习新的一切。我也使用过 KDevelop,我在使用它时非常喜欢它,尽管现在已经有一段时间了。它对 C/C++ 中的 GNU 风格开发有很多支持,而且我记得它非常强大。

祝你的努力好运!

链接:

于 2011-08-15T03:47:44.600 回答
2

虽然我不建议将它用于常规 C++ 开发,但我正在为小型 C++ 实用程序使用简单的 shell 脚本包装器。这是一个 Hello World 示例:

#if 0  // -- build and run wrapper script for C++ ------------------------------
TMP=$(mktemp -d)
c++ -o ${TMP}/a.out ${0} && ${TMP}/a.out ${@:1} ; RV=${?}
rm -rf ${TMP}
exit ${RV}
#endif // ----------------------------------------------------------------------

#include <iostream>

int main(int argc, char *argv[])
{
  std::cout << "Hello world" << std::endl;
  return 0;
}
于 2017-04-10T14:28:33.440 回答
0

shebang 是http://en.wikipedia.org/wiki/Shebang_%28Unix%29

不知道为什么你的程序没有运行。您将需要编译和链接以生成可执行文件。

于 2011-08-15T03:28:55.487 回答
0

我发现令人困惑(/有趣)的是 C++ 程序给出“Shebang line”错误。Shebang 行是类 Unix 操作系统的一种方式,用于指定应使用哪个程序来解释文件的其余部分。shebang 线通常指向解释器的路径。C++ 是一种编译语言,没有解释器。

要获得 shebang 线如何工作的真正技术细节,请执行man execve并在此处在线获取该手册页 - man execve

于 2011-08-15T03:34:34.380 回答
0

如果您使用的是 Mac,那么在命令行上执行以下操作:

g++ -o program program.cpp

将编译您的程序并将其链接到一个名为program. 然后你可以像这样运行它:

./program

您收到“shebang”错误的原因可能是因为您尝试运行 cpp 文件,例如:

./program.cpp

shell 会尝试找到一个解释器来运行文件中的代码。因为这是 C++,所以没有相关的解释器,但如果你的文件包含 Python 或 Bash,那么有这样一行

#!/usr/bin/python

在源文件的第一行将告诉 shell 使用 python 解释器

于 2011-08-15T03:44:41.700 回答
0

以这样的模式开头的行:#!/.../.../.. 称为 shebang 行。换句话说,shebang 是由字符数字符号和感叹号 (#!) 组成的字符序列。在类 Unix 操作系统中,当使用带有 shebang 的文本文件就好像它是可执行文件一样时,程序加载器机制将文件初始行的其余部分解析为解释器指令。加载程序执行指定的解释程序,将尝试运行脚本时最初使用的路径作为参数传递给它,以便程序可以使用文件作为输入数据。

于 2019-09-25T17:50:52.547 回答