首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是“shebang”线路?

什么是“shebang”线路?
EN

Stack Overflow用户
提问于 2011-08-15 11:25:05
回答 7查看 17K关注 0票数 4

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

所以,我写了一个非常常见的"Hello World“程序。不过,当我尝试运行它时,我得到了一个错误:

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

我尝试搜索错误代码以了解如何修复此问题,但我什么也找不到。我不知道“shebang”是什么.有人能帮帮我吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-15 11:47:45

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

来自http://www.tech-recipes.com/rx/726/mac-os-x-install-gcc-compiler/:“要安装gcc编译器,请从http://connect.apple.com/下载xcode包。你需要注册一个苹果开发者连接帐户。注册后,登录并点击下载软件,然后点击开发者工具。找到Xcode工具(版本)- CD镜像旁边的下载链接并点击它!”

安装完成后,如果您要快速获取Hello World,那么可以从源文件目录中的终端窗口执行命令g++ HelloWorld.cpp -o HelloWorld。然后,您应该能够以./HelloWorld身份运行它。

此外,如果你来自Visual Studio世界,你可能想尝试一下Mono和MonoDevelop。Mono是C# (和其他语言)的免费实现,而MonoDevelop是一个与Visual Studio非常相似的集成开发环境。MonoDevelop支持C#和其他.NET语言,包括Visual Basic .NET以及C/C++开发。我没有广泛地使用它,但它看起来与VS非常相似,所以你不需要在一天内学习所有新的东西。我也用过KDevelop,虽然已经有一段时间了,但我在使用它的时候非常喜欢它。它对C/C++中的GNU风格的开发有很多支持,并且在我的记忆中非常强大。

祝你的努力好运!

链接:

http://mono-project.com/Main_Page

  • MonoDevelop:http://monodevelop.com/

  • KDevelop:http://kdevelop.org/

  • Mono
票数 2
EN

Stack Overflow用户

发布于 2011-08-15 11:27:47

你需要先用编译器编译它。我假设您试图像./source一样运行源文件,但是C++不是这样工作的。

但是,在某些编译器中,您可以提供一个 shebang行作为源文件的第一行(该#!称为shebang或,因此得名),如下所示:

代码语言:javascript
运行
复制
#!/path/to/compiler

这样,shell就知道使用哪个应用程序来运行这种类型的文件,并且当您尝试单独运行源文件时,编译器将为您编译并运行它。不过,这是一个依赖于编译器的特性,所以我建议使用G++或Mac用来获取可执行文件的任何工具进行简单编译,然后运行它。

票数 5
EN

Stack Overflow用户

发布于 2017-04-10 22:28:33

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

代码语言:javascript
运行
复制
#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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7061449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档