Как я могу скомпилировать / запустить C или C ++ в консоли Unix или терминале Mac?
(Я знаю это, забудь об этом и заново изучи. Время записать.)
Как я могу скомпилировать / запустить C или C ++ в консоли Unix или терминале Mac?
(Я знаю это, забудь об этом и заново изучи. Время записать.)
Ответы:
Если это простая программа с одним исходным кодом:
make foo
где исходный файл - foo.c или foo.cpp и т. д.
Вам даже не нужен make-файл. Make имеет достаточно встроенных правил для сборки вашего исходного файла в исполняемый файл с тем же именем, за исключением расширения.
Запуск только что созданного исполняемого файла аналогичен запуску любой программы, но чаще всего вам потребуется указывать путь к исполняемому файлу, поскольку оболочка будет искать только то, что находится, $PATH
чтобы найти исполняемые файлы, и чаще всего это не включает текущий каталог ( .
).
Итак, чтобы запустить встроенный исполняемый файл foo
:
./foo
make main.cpp
, но make main
.
gcc main.cpp -o main.out
./main.out
Undefined symbols for architecture x86_64
касается вопроса, я изменяю команду следующим образом:, gcc -lstdc++ main.cpp -o main.out
и это работает на моем Mac. по ссылке: stackoverflow.com/questions/11852568/…
Эта команда работает на всех машинах Unix ... Я использую ее в Linux / Ubuntu, но она работает и в OS X. Введите следующую команду в Terminal.app .
$ g++ -o lab21 iterative.cpp
-o
буква О не ноль
lab21
будет вашим исполняемым файлом
iterative.cpp
это ваш файл C ++
После запуска этой команды введите в терминале следующую команду:
$ ./lab21
Два шага для меня:
первый:
make foo
затем:
./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 на терминал.
Для запуска любой другой команды, которой нет в пути поиска исполняемого файла, необходимо указать путь к исполняемому файлу. Допустим, в моем домашнем каталоге на Mac OS X есть исполняемый файл MyProgram, который можно полностью квалифицировать следующим образом:
/ Users / оливер / MyProgram
Если вы находитесь в месте, которое находится рядом с программой, которую вы хотели выполнить, вы можете указать имя с частичным путем. Например, если я MyProgram
находился в каталоге /Users/oliver/MyProject
I и я был в моем домашнем каталоге, я могу определить имя исполняемого файла следующим образом и заставить его выполнить:
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. Также обратите внимание, что строка хеш-взрыва (#!) Должна быть первой строкой файла (если она еще не существует). Также обратите внимание, что этот метод требует, чтобы ваша оболочка входа в систему была bash (по умолчанию в Mac OS X и большинстве дистрибутивов Linux). Также обратите внимание, что если вы хотите, чтобы ваши установленные программы ~/bin
использовались в предпочтении системным исполняемым файлам, вы должны переупорядочить оператор экспорта следующим образом:
export PATH=~/bin:$PATH
Райан, я изменяю это, чтобы быть ответом вместо комментария, так как кажется, что я был слишком кратким. Сделайте все это в «Терминале».
Чтобы использовать компилятор 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
Компактный способ сделать это может быть:
make foo && ./$_
Приятно иметь однострочную версию, так что вы можете просто перезапустить свой исполняемый файл снова легко.
Предполагая, что текущий каталог не в пути, синтаксис ./[name of the program]
.
Например ./a.out
Добавьте следующие, чтобы получить лучшие предупреждения, вы не пожалеете об этом. Если вы можете, скомпилируйте WISE (предупреждение об ошибке)
- Wall -pedantic -Weffc++ -Werror
Для компиляции программ на C или C ++ есть общая команда:
make filename
./filename
make соберет ваш исходный файл в исполняемый файл с тем же именем. Но если вы хотите использовать стандартный способ, вы можете использовать компилятор gcc для сборки программ на C и g ++ для c ++
Для C:
gcc filename.c
./a.out
Для C ++:
g++ filename.cpp
./a.out
Использовать makefile
. Даже для очень небольших (= однофайловых) проектов усилия, вероятно, того стоят, потому что вы можете иметь несколько наборов настроек компилятора для тестирования. Таким образом, отладка и развертывание работают намного проще.
Прочтите make
руководство , оно кажется довольно длинным на первый взгляд, но большинство разделов вы можете просто просмотреть. В общем, это заняло у меня несколько часов и сделало меня гораздо более продуктивным.
Я нашел эту ссылку с указаниями:
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)
gcc hello.c -o a.out
? Который делает так же, как gcc hello.c
.
просто войдите в каталог, в котором находится ваш 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
Для запуска файлов c ++ выполните команду ниже, предполагая, что имя файла - "main.cpp"
1. Скомпилируйте файл объекта из файла C ++.
g++ -c main.cpp -o main.o
2. Поскольку #include <conio.h>
не поддерживается в MacOS, поэтому мы должны использовать его альтернативу, которая поддерживается в Mac #include <curses.h>
. Теперь объектный файл необходимо преобразовать в исполняемый файл. Чтобы использовать curses.h
мы должны использовать библиотеку -lcurses
.
g++ -o main main.o -lcurses
3. Теперь запустите исполняемый файл.
./main