Как я могу скомпилировать/запустить C или C++ в консоли Unix или терминале Mac?
(Я знаю это, забудь это, и заново изучи это. Время, чтобы записать это.)
Как я могу скомпилировать/запустить C или C++ в консоли Unix или терминале Mac?
(Я знаю это, забудь это, и заново изучи это. Время, чтобы записать это.)
Если это простая программа с одним исходным кодом:
make foo
где исходный файл - foo.c или foo.cpp и т.д.
Вам даже не нужен make файл. Make имеет достаточно встроенных правил для сборки вашего исходного файла в исполняемый файл с тем же именем, за вычетом расширения.
Запуск только что созданного исполняемого файла аналогичен запуску любой программы, но чаще всего вам потребуется указывать путь к исполняемому файлу, поскольку оболочка будет искать только то, что находится в $PATH
чтобы найти исполняемые файлы, и чаще всего это не включает текущий каталог (.
).
Итак, для запуска встроенного исполняемого файла foo
:
./foo
gcc main.cpp -o main.out
./main.out
Это команда, которая работает на всех машинах Unix... Я использую ее в Linux/Ubuntu, но она работает и в OS X. Введите следующую команду в Terminal.app.
$ g++ -o lab21 iterative.cpp
-o
- это буква O не ноль
lab21
будет вашим исполняемым файлом
iterative.cpp
- ваш файл С++
После запуска этой команды введите в терминал следующую команду:
$ ./lab21
Два шага для меня:
первый:
make foo
то
./foo
Все выполнение приложения в среде Unix (Linux, Mac OS X и AIX и т.д.) зависит от исполняемого пути поиска.
Вы можете отобразить этот путь в терминале с помощью этой команды:
echo $PATH
В Mac OS X (по умолчанию) отобразится следующий путь поиска с двоеточием:
/USR/бен:/бен:/USR/SBIN:/SBIN:/USR/локальные/бен:/USR/X11/бен
Таким образом, любой исполняемый файл в перечисленных каталогах может быть запущен просто путем ввода имени. Например:
cat mytextfile.txt
Выполняется /bin/cat
и отображает mytextfile.txt на терминал.
Для запуска любой другой команды, которая не находится в исполняемом пути поиска, требуется, чтобы вы определили путь к исполняемому файлу. Так сказать, у меня был исполняемый файл под названием MyProgram в моем домашнем каталоге на Mac OS X. Я могу полностью квалифицировать его так:
/Users/оливер/MyProgram
Если вы находитесь в месте, расположенном рядом с программой, которую хотите выполнить, вы можете квалифицировать имя с частичным путем. Например, если MyProgram
находился в каталоге /Users/oliver/MyProject
, я и я были в моем домашнем каталоге, я могу квалифицировать исполняемое имя, подобное этому, и выполнить его:
MyProject/MyProgram
Или скажу, что я был в каталоге /Users/oliver/MyProject2
, и я хотел выполнить /Users/oliver/MyProject/MyProgram
Я могу использовать относительный путь, подобный этому, для его выполнения:
../MyProject/MyProgram
Аналогично, если я находится в том же каталоге, что и MyProgram
, мне нужно использовать относительный путь "текущего каталога". Текущий каталог, в котором вы находитесь, - это символ периода, за которым следует косая черта. Например:
./MyProgram
Чтобы определить, в какой директории в данный момент используется команда pwd
.
Если вы обычно помещаете программы в место на своем жестком диске, которое вы хотите запустить, не требуя квалификации своих имен. Например, если у вас есть каталог "bin" в вашем домашнем каталоге для регулярно используемых сценариев оболочки других программ, может быть разумным изменить ваш путь к исполняемому файлу.
Это может быть легко путем создания или редактирования существующего файла .bash_profile
в вашем домашнем каталоге и добавления строк:
#!/bin/sh
export PATH=$PATH:~/bin
Здесь символ тильды (~) используется как ярлык для /Users/oliver. Также обратите внимание, что строка hash bang (#!) Должна быть первой строкой файла (если она еще не существует). Обратите также внимание на то, что для этого метода требуется, чтобы ваша оболочка для входа была bash (по умолчанию для Mac OS X X и большинства дистрибутивов Linux). Также обратите внимание, что если вы хотите, чтобы ваши программы, установленные в ~/bin
, были использованы по предпочтению системным исполняемым файлам, вы должны изменить порядок экспорта следующим образом:
export PATH=~/bin:$PATH
Ryan, я изменяю это как ответ вместо комментария, так как кажется, что я был слишком кратким. Сделайте все это в "Терминале".
Чтобы использовать компилятор g++, вам нужно сделать следующее:
Перейдите в каталог, в котором вы сохранили файл *.cpp.
cd ~/programs/myprograms/
(~ является ярлыком для вашего дома, то есть /Users/Ryan/programs/myprograms/, замените место, которое вы фактически использовали.)
Скомпилируйте его
g++ input.cpp -o output.bin
(output.bin может быть любым с любым расширением, действительно. bin просто обычен в unix.)
Не должно быть НИЧЕГО, если оно было успешным, и это в порядке. Как правило, вы получаете прибыль от сбоев.
Однако, если вы наберете ls
, вы увидите список файлов в том же каталоге. Например, вы увидите другие папки, input.cpp и output.bin
Изнутри каталога теперь выполняйте его с помощью ./outbut.bin
Предполагая, что текущий каталог не находится в пути, синтаксис ./[name of the program]
.
Например ./a.out
Добавьте следующие, чтобы получить лучшие предупреждения, вы не пожалеете. Если вы можете, скомпилируйте WISE (предупреждение - ошибка)
- Wall -pedantic -Weffc++ -Werror
Компактный способ сделать это можно:
make foo && ./$_
Приятно иметь однострочный вкладыш, чтобы вы могли просто снова запустить свой исполняемый файл снова.
Для компиляции программ на C или C++ есть общая команда:
make filename
./filename
make соберет ваш исходный файл в исполняемый файл с тем же именем. Но если вы хотите использовать стандартный способ, вы можете использовать компилятор gcc для сборки программ на C и g++ для C++
Для C:
gcc filename.c
./a.out
Для C++:
g++ filename.cpp
./a.out
Используйте makefile
. Даже для очень маленьких (= однофайловых) проектов это, вероятно, стоит того, потому что у вас может быть несколько наборов параметров компилятора для проверки. Отладка и развертывание работают намного проще.
Прочтите make
manual, на первый взгляд это выглядит довольно долго, но большинство разделов вы можете просто пересмотреть. В общем, это заняло у меня несколько часов и сделало меня намного более продуктивным.
Я нашел эту ссылку с указаниями:
http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/
В основном вы:
gcc hello.c
./a.out (or with the output file of the first command)
просто войдите в каталог, в котором находится ваш c/cpp файл.
для компиляции и запуска кода c.
$gcc filename.c
$./a.out filename.c
для компиляции и запуска кода c++.
$g++ filename.cpp
$./a.out filename.cpp
$ является символом терминала Mac по умолчанию
Чтобы скомпилировать и запустить исходный код cpp из терминала Mac, необходимо сделать следующее:
Запуск файла .C с использованием терминала - это двухэтапный процесс. Первым шагом будет набрать gcc в терминале и вынуть файл .C на терминал, а затем нажать Enter:
username$ gcc /Desktop/test.c
На втором шаге выполните следующую команду:
username$ ~/a.out
Зайдите в свой корневой каталог (должен быть ~
) и посмотрите на файл с именем .bash_profile
. Вставьте этот код в новую строку:
function run() {
eval make $1
eval ./$1
}
Перезапустите все открытые терминалы. Теперь запустите любую программу c++
, добавив к ней префикс run
:
run hello-world