Как скомпилировать и запустить C/C++ на консоли Unix/терминале Mac?

StackOverflow https://stackoverflow.com/questions/221185

Вопрос

Как я могу скомпилировать/запустить 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 & nbsp; X. Введите следующую команду в Terminal.app .

$ g++ -o lab21 iterative.cpp

-o это буква O не ноль

lab21 будет вашим исполняемым файлом

iterative.cpp - ваш файл C ++

После запуска этой команды введите в терминале следующую команду для запуска вашей программы:

$ ./lab21

Два шага для меня:

первый:

make foo

затем:

./foo

Выполнение любого приложения в среде Unix (Linux, Mac OS X, AIX и т. д.) зависит от пути поиска исполняемого файла.

Вы можете отобразить этот путь в терминале с помощью этой команды:

эхо $PATH

В Mac OS X (по умолчанию) будет отображаться следующий путь поиска, разделенный двоеточиями:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

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

кот mytextfile.txt

Это работает /bin/cat и отображает mytextfile.txt на терминале.

Для запуска любой другой команды, которой нет в пути поиска исполняемого файла, необходимо указать путь к исполняемому файлу.Предположим, у меня в домашнем каталоге Mac OS X есть исполняемый файл MyProgram. Я могу его полностью квалифицировать следующим образом:

/Пользователи/Оливер/MyProgram

Если вы находитесь рядом с программой, которую хотите выполнить, вы можете уточнить имя, указав частичный путь.Например, если MyProgram был в каталоге /Users/oliver/MyProject Когда я находился в своем домашнем каталоге, я могу указать имя исполняемого файла следующим образом и запустить его:

МойПроект/МояПрограмма

Или скажем, я был в каталоге /Users/oliver/MyProject2 и я хотел выполнить /Users/oliver/MyProject/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

  • Предполагая, что текущий каталог не находится в пути, синтаксис: ./ [название программы] .

    Например, ./ a.out

    Добавьте следующее, чтобы получить лучшие предупреждения, вы не пожалеете об этом. Если вы можете, скомпилируйте WISE (предупреждение об ошибке)

    - Wall -pedantic -Weffc++ -Werror
    

    Компактный способ сделать это может быть:

    make foo && ./

    Компактный способ сделать это может быть:

    <*>

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

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

    Для компиляции программ на C или C ++ есть общая команда:

    <Ол>
  • сделать имя файла

  • <код> ./ имя_файла

  • make соберет ваш исходный файл в исполняемый файл с тем же именем. Но если вы хотите использовать стандартный способ, вы можете использовать компилятор gcc для сборки программ на C & amp; g ++ для c ++

    Для C:

    gcc filename.c
    
    ./a.out
    

    Для C ++:

    g++ filename.cpp
    
    ./a.out
    

    Используйте makefile . Даже для очень маленьких (= однофайловых) проектов усилия, вероятно, того стоят, потому что вы можете иметь несколько наборов настроек компилятора для тестирования. Отладка и развертывание работают намного проще.

    Прочтите make руководство . На первый взгляд это кажется довольно длинным, но большинство разделов вы можете просто просмотреть. В общем, это заняло у меня несколько часов и сделало меня гораздо более продуктивным.

    scroll top