目前我正在尝试在我的新 Mac 上开始编程。我安装了 TextWrangler,并选择了 C++ 作为我的首选语言;因为我对它有一些先验知识,从我使用 Windows 开始。
所以,我编写了一个非常常见的“Hello World”程序。虽然,当我试图运行它时,我得到了一个错误:
“此文件似乎不包含有效的 'shebang' 行(应用程序错误代码:13304)”
我尝试搜索错误代码以了解如何解决此问题,但我找不到任何东西..我不知道什么是“shebang”行...有人可以帮帮我吗?
目前我正在尝试在我的新 Mac 上开始编程。我安装了 TextWrangler,并选择了 C++ 作为我的首选语言;因为我对它有一些先验知识,从我使用 Windows 开始。
所以,我编写了一个非常常见的“Hello World”程序。虽然,当我试图运行它时,我得到了一个错误:
“此文件似乎不包含有效的 'shebang' 行(应用程序错误代码:13304)”
我尝试搜索错误代码以了解如何解决此问题,但我找不到任何东西..我不知道什么是“shebang”行...有人可以帮帮我吗?
您需要先使用编译器对其进行编译。我假设您尝试像这样运行源文件,./source
但 C++ 不能以这种方式工作。
但是,对于某些编译器,您可以提供shebang-line作为源文件的第一行(#!
称为shebang或crunchbang,因此得名),如下所示:
#!/path/to/compiler
这样 shell 就知道使用什么应用程序来运行这种文件,并且当您尝试自己运行源文件时,编译器将为您编译并运行它。不过,这是一个依赖于编译器的功能,所以我建议只使用 G++ 或任何 Mac 用于获取可执行文件的简单编译,然后运行它。
看起来您正在尝试直接运行源文件,但是您需要使用 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 风格开发有很多支持,而且我记得它非常强大。
祝你的努力好运!
链接:
虽然我不建议将它用于常规 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;
}
shebang 是http://en.wikipedia.org/wiki/Shebang_%28Unix%29。
不知道为什么你的程序没有运行。您将需要编译和链接以生成可执行文件。
我发现令人困惑(/有趣)的是 C++ 程序给出“Shebang line”错误。Shebang 行是类 Unix 操作系统的一种方式,用于指定应使用哪个程序来解释文件的其余部分。shebang 线通常指向解释器的路径。C++ 是一种编译语言,没有解释器。
要获得 shebang 线如何工作的真正技术细节,请执行man execve并在此处在线获取该手册页 - man execve。
如果您使用的是 Mac,那么在命令行上执行以下操作:
g++ -o program program.cpp
将编译您的程序并将其链接到一个名为program
. 然后你可以像这样运行它:
./program
您收到“shebang”错误的原因可能是因为您尝试运行 cpp 文件,例如:
./program.cpp
shell 会尝试找到一个解释器来运行文件中的代码。因为这是 C++,所以没有相关的解释器,但如果你的文件包含 Python 或 Bash,那么有这样一行
#!/usr/bin/python
在源文件的第一行将告诉 shell 使用 python 解释器
以这样的模式开头的行:#!/.../.../.. 称为 shebang 行。换句话说,shebang 是由字符数字符号和感叹号 (#!) 组成的字符序列。在类 Unix 操作系统中,当使用带有 shebang 的文本文件就好像它是可执行文件一样时,程序加载器机制将文件初始行的其余部分解析为解释器指令。加载程序执行指定的解释程序,将尝试运行脚本时最初使用的路径作为参数传递给它,以便程序可以使用文件作为输入数据。