Что такое линия «Шебанг»? - PullRequest
4 голосов
/ 15 августа 2011

В настоящее время я пытаюсь начать программирование на моем новом Mac.Я установил TextWrangler и выбрал C ++ в качестве языка выбора;так как у меня есть некоторые предварительные знания об этом, когда я использовал Windows.

Итак, я написал очень распространенную программу "Hello World".Хотя, когда я попытался запустить его, я получил сообщение об ошибке:

"Этот файл не содержит действительной строки 'shebang' (код ошибки приложения: 13304)"

Iпопытался найти код ошибки, чтобы выяснить, как это исправить, но я ничего не смог найти ... Я понятия не имею, что такое строка "шебанг" ... Может кто-нибудь мне помочь?

Ответы [ 6 ]

4 голосов
/ 15 августа 2011

Сначала вам нужно скомпилировать его с помощью компилятора. Я предполагаю, что вы пытались запустить исходный файл как ./source, но C ++ не работает таким образом.

Однако в некоторых компиляторах вы можете указать shebang-line в качестве первой строки исходного файла (#! известен как shebang или crunchbang , отсюда и название), вот так:

#!/path/to/compiler

Чтобы оболочка знала, какое приложение используется для запуска файлов такого типа, и когда вы попытаетесь запустить исходный файл самостоятельно, компилятор скомпилирует и запустит его для вас. Однако это зависит от компилятора, поэтому я рекомендую просто компилировать с помощью G ++ или любого другого компьютера Mac, чтобы получить исполняемый файл, а затем запустить его.

2 голосов
/ 15 августа 2011

Похоже, что вы пытаетесь запустить исходный файл напрямую, однако вам нужно будет скомпилировать его с помощью компилятора C ++, например, включенного в gcc (GNU Compiler Collection), который содержит компилятор C ++ g++ длямакинтошОн не входит в состав Mac, его необходимо сначала загрузить:

с http://www.tech -recipes.com / rx / 726 / mac-os-x-install-gcc-compiler / : "Чтобы установить компилятор gcc, загрузите пакет xcode с http://connect.apple.com/.. Вам необходимо зарегистрироваться для учетной записи Apple Developer Connection. После регистрации войдите в систему и нажмите« Загрузить программное обеспечение », а затем« Инструменты разработчика ».Найдите ссылку на скачивание рядом с Xcode Tools (версия) - образ компакт-диска и щелкните по нему! "

После установки, если вы собираетесь на быстрый Hello World, то из окна терминала в каталоге вашегоИсходный файл, вы можете выполнить команду g++ HelloWorld.cpp -o HelloWorld.Тогда вы сможете запустить его как ./HelloWorld.

Кроме того, если вы пришли из мира Visual Studio, вы можете попробовать Mono и MonoDevelop.Mono - это бесплатная реализация C # (и других языков), а MonoDevelop - IDE, которая очень похожа на Visual Studio.MonoDevelop поддерживает C # и другие языки .NET, включая Visual Basic .NET, а также разработку на C / C ++.Я не использовал его широко, но, похоже, он очень похож на VS, так что вам не придется изучать все новое за день.Я также использовал KDevelop, который мне очень понравился, когда я его использовал, хотя это было давно.Он имеет большую поддержку для разработки в стиле GNU на C / C ++ и, насколько я помню, был очень мощным.

Удачи в ваших начинаниях!

Ссылки:

0 голосов
/ 10 апреля 2017

Хотя я бы не рекомендовал это для обычной разработки C ++, я использую простую оболочку сценария оболочки для небольших утилит C ++.Вот пример 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;
}
0 голосов
/ 15 августа 2011

Если вы работаете на Mac, выполните в командной строке нечто подобное:

g++ -o program program.cpp

Скомпилирует и свяжет вашу программу в исполняемый файл с именем program. Тогда вы можете запустить его как:

./program

Причина, по которой вы получили ошибку 'shebang', возможно, в том, что вы пытались запустить файл cpp, например:

./program.cpp

И оболочка пытается найти интерпретатор для запуска кода в файле. Поскольку это C ++, соответствующего интерпретатора нет, но если ваш файл содержит Python или Bash, то строка будет выглядеть следующим образом

#!/usr/bin/python

в первой строке вашего исходного файла сообщит оболочке использовать интерпретатор python

0 голосов
/ 15 августа 2011

Что меня смущает (/ интересно), так это программа на C ++, выдающая ошибку «линия Шебанга».Строка Shebang - это способ для Unix-подобной операционной системы указать, какую программу следует использовать для интерпретации остальной части файла.Линия Шебанга обычно указывает на путь переводчика.C ++ является скомпилированным языком и не имеет для него переводчика.

Чтобы получить реальные технические подробности о том, как работают строки shebang, выполните man execve и получите эту страницу руководства онлайн здесь - человек execve .

0 голосов
/ 15 августа 2011

Шебанг http://en.wikipedia.org/wiki/Shebang_%28Unix%29.

не уверен, почему ваша программа не работает.вам нужно будет скомпилировать и создать ссылку на исполняемый файл.

...