Компиляция ПО из исходных текстов
Если rpm-пакеты с необходимым вам программным обеспечением нужно еще поискать (и не всегда можно найти), то tar-gz-архив любого ПО для Linux найдется в Интернете непременно. В некоторых случаях такие архивы содержат исполняемые модули приложений.
Тогда установка приложения лишь немного сложнее, чем в случае установки из rpm-пакета: необходимо просто развернуть архив с помощью программ gunzip и tar, перейти в созданный каталог и можно уже запускать полученное приложение. Но чаще всего приложения поставляются в исходных текстах, т. е. в виде программы на языке Си. Установить их в этом случае немного сложнее, хотя и тут нет ничего невозможного даже для начинающего пользователя. Давайте рассмотрим, как это делается.
10.3.1. Необходимые сведения о программировании на языке Си
Начать стоит с того, что операционная система UNIX родилась на свет одновременно с языком программирования C (Си). Более того, язык C был создан специально для разработки этой ОС, значительная часть UNIX была написана на языке С. ОС Linux тоже написана на Си. Поэтому, а также в соответствии с принципом свободного распространения исходных кодов, многие приложения для Linux распространяются в виде текстов на С (а в последнее время — и на С++). Естественно, что для установки и запуска такого приложения на исполнение, его необходимо предварительно скомпилировать. Для выполнения процедур компиляции обычно используется программа gcc (хотя существуют и некоторые альтернативные разработки).
Установка программы «Локализатор исходного кода» и дополнительных модулей орфографии
Примечание
Изначально аббревиатура GCC имела смысл GNU C Compiler, но в апреле 1999 года сообщество GNU решило взять на себя более сложную миссию и начать создание компиляторов для новых языков с новыми методами оптимизации, поддержкой новых платформ, улучшенных runtime-библиотек и других изменений (http://gcc.gnu.org/gccmission.html). Поэтому сегодня GCC расшифровывается как GNU Compiler Collection (коллекция компиляторов GNU) и содержит в себе компиляторы для языков C, C++, Objective C, Chill, Fortran, Ada и Java, а также библиотеки для этих языков (libstdc++, libgcj, …).
GNU-компилятор с языка С gcc, содержит в себе 4 основных компонента, соответствующие четырем этапам преобразования исходного кода в исполняемую программу.
Первый компонент — это препроцессор, который модифицирует исходный код программы перед компиляцией в соответствии с командами препроцессора, содержащимися в С-программе. В соответствии с этими командами выполняются простые подстановки текста. Второй — собственно компилятор, который обрабатывает исходный код и преобразует его в код на языке ассемблера.
Третий компонент — ассемблер, который генерирует объектный код. И, наконец, четвертый компонент — компоновщик, который собирает исполняемый файл из файлов объектного кода. Дело в том, что большие программы обычно пишутся по частям, в виде множества отдельных файлов, содержащих исходный код соответствующей части.
Компилятор обрабатывает каждый такой файл отдельно и создает отдельные объектные модули (файлы таких модулей обычно имеют расширение o). Создание единой исполняемой программы из таких модулей и является задачей компоновщика. При таком подходе, если в какой-то модуль программист вносит исправление, нет необходимости заново компилировать всю программу: достаточно откомпилировать исправленный модуль и заново запустить компоновщик.
Linux: сборка пакетов из исходников
Для выполнения стандартных операций программист может использовать функции из стандартных библиотек. Самый характерный пример — это библиотека libc, которая содержит функции, выполняющие такие задачи, как управление памятью и операции ввода-вывода. Программисты могут создать свои собственные библиотеки и использовать их при написании новых программ.
Библиотеки бывают статическими, разделяемыми и динамическими. Статическая библиотека — это библиотека, код которой встраивается в программу при компиляции. Код разделяемой библиотеки не встраивается в программу, а загружается в память одновременно с программой и программа получает доступ к функциям этой библиотеки.
Динамические библиотеки — разновидность разделяемых, но библиотечные функции загружаются в память только тогда, когда из программы поступит вызов соответствующей функции. В процессе выполнения программы они могут выгружаться и заменяться другими функциями из той же или другой библиотеки.
Имена статических библиотек обычно имеют суффикс .a, а имена разделяемых библиотек — суффикс .so, за которым следует старший и младший номера версии. Имя может быть любой строкой, которая однозначно характеризует библиотеку. Обычно имена библиотек начинаются с lib. Примеры: libm.so.5 — общая математическая библиотека, libX11.so.6 — библиотека для работы с системой X Window.
Библиотека libc.so.5 компонуется автоматически, в то время как большинство других библиотек необходимо явно указывать в командной строке при вызове программы gcc. Это делается через опцию -l, за которой следует уникальная часть имени библиотеки, например, для вызова математической библиотеки достаточно указать -lm.
Многие системные библиотеки располагаются в системных каталогах, например, в /usr/lib и /lib, но некоторые могут располагаться и в других местах. Список этих каталогов помещается в файл /etc/ld.so.conf. Каждый раз, когда разделяемая библиотека изменяется или инсталлируется вновь, нужно выполнять команду ldconfig, чтобы обновить файл /etc/ld.so.conf, а также ссылки на него. Если библиотека инсталлируется из RPM-пакета, это обычно делается автоматически, хотя и не всегда.
При компиляции больших программ, использующих фрагменты исходного кода, расположенные в разных файлах, бывает очень трудно отследить, какие файлы нужно перекомпилировать, а какие только компоновать. В таких случаях очень помогает утилита make, которая автоматически определяет, следует ли компилировать файл исходного кода, по дате его последней модификации.
Утилита make оперирует файлами, исходя из их зависимости друг от друга. Эти зависимости определяются файлом с именем makefile. Строка файла makefile состоит из трех частей: имени целевого файла, списка файлов, от которых он зависит, и команды. Если какой-либо файл из списка изменился после целевого файла, то выполняется указанная в строке команда.
В строке может быть указано несколько команд. Обычно команда — это вызов компилятора для компиляции файла исходного кода или компоновки файлов объектного кода. Строки, определяющие зависимости, отделяются друг от друга пустой строкой.
Инсталляция пакетов ПО из исходных текстов
Теперь, когда мы получили общее представление о компиляции программ на языке С, можно рассмотреть обращение с пакетами программ, распространяемыми в виде исходных кодов. Первое, что надо сказать в этой связи, это то, что для установки таких пакетов вы, естественно, должны иметь в своей системе утилиты gcc и make.
Непосредственно процесс инсталляции пакета состоит из следующих шагов:
Перейти (с помощью команды cd) в каталог, содержащий исходные коды устанавливаемого пакета.
Выполнить команду ./configure, которая осуществляет конфигурирование пакета в соответствии с вашей системой. Процесс выполнения этой команды занимает довольно длительное время, причем команда выдает на экран сообщения о том, какие именно особенности системы испытываются.
Выполнить команду make, для того, чтобы скомпилировать пакет.
После этого можно выполнить (это шаг не является обязательным) команду make check, которая вызывает запуск процедур самотестирования, которые поставляются с пакетом.
Выполнить команду make install для установки программ, а также файлов данных и документации.
Заключительный этап состоит в выполнении команды make clean, которая удаляет промежуточные объектные и двоичные файлы из каталога с исходными кодами. Для удаления временных файлов, которые создала команда configure (после чего пакет можно компилировать для другого типа компьютеров), надо выполнить команду make distclean.
В большинстве случаев выполнение этой последовательности команд достаточно для установки нового пакета.
Основная проблема, с которой приходится сталкиваться при инсталляции программ из исходных кодов, связана с конфликтами версий: для вновь устанавливаемого пакета требуются новые версии каких-то системных утилит, которые пока еще не установлены в вашей системе. Более того, часто возникает целая цепочка (или даже дерево): для программы нужна какая-то новая версия утилиты, для последней нужно обновить еще какие-то утилиты, и т. д.. Но, если вы не очень давно устанавливали (или обновляли) дистрибутив, то таких проблем не возникает, и обновление пакета пройдет без затруднений.
Ещё новости:
- Установка ffserver и ffmpeg на Debian10 2018-01-06 ffserver был удален из FFmpeg из-за…
- Установка Windows на данный диск невозможна — на выбранном диске mbr Установка Windows на данный диск невозможна -…
Источник: salesat.ru
31 — Установка программ из source-кодов
Сразу хочу сказать, что здесь никакой воды про установка программ из source-кодов, и только нужная информация. Для того чтобы лучше понимать что такое установка программ из source-кодов , настоятельно рекомендую прочитать все из категории Операционная система LINUX. В этой лекции мы рассмотрим как в Linux выполнить установку программы из исходных кодов.
Также говорят установить из source-кодов или “исходников“. В настоящее время для всех популярных Linux-дистибутивов программное обеспечение поставляется в виде пакетов и уже нет необходимости компилировать и устанавливать программы из source-кодов. Но все же уметь выполнять эту операцию нужно.
Как правило, исходные коды программы распространяются в архиве .tar.gz. Иногда могут встречаться другие типы архивов, но этот пока самый распространенный. Что означают символы tar.gz? Они говорят о том, что исходные коды программы были заархивированы командой tar, а затем сжаты командой gzip.
Команда tar (type archive) — одна из самых старых команд Linux. Ее задача состоит в том чтобы из любой ветки файловой системы можно было сделать архив в виде одного файла. Таким образом утилита tar не сжимает данные, а записывает их в несжатом виде в один файл. Затем, созданный tar-файл, сжимается архиватором gzip. Например, создайте каталог targz в котором создайте несколько подкаталогов и файлов:
1
2
3
4
5
6
7
8
9
10
11
12
13
$ mkdir targz
$ mkdir -p ./targz/1
$ mkdir -p ./targz/2
$ mkdir -p ./targz/3
$ mkdir -p ./targz/4
$ echo «Hello hello HELLO» > ./targz/1.txt
$ cp ./targz/1.txt ./targz/2.txt
$ cp ./targz/1.txt ./targz/3.txt
$ cp ./targz/1.txt ./targz/4.txt
$ cp ./targz/1.txt ./targz/1/1.txt
$ cp ./targz/1.txt ./targz/2/1.txt
$ cp ./targz/1.txt ./targz/3/1.txt
$ cp ./targz/1.txt ./targz/4/1.txt
Чтобы создать tar-архив (tar-файл) каталога targz выполняем команду:
$ tar -cf targz.tar ./targz/
В результате получим файл targz.tar. Чтобы распаковать tar-архив выполняем следующую команду:
$ tar -xvf targz.tar
Чтобы из tar-архива создать tar.gz-архив его нужно сжать утилитой gzip:
$ gzip targz.tar
В результате получим tar.gz-архив — targz.tar.gz. Обратите также внимание на то, что утилита gzip при сжатии удаляет исходный файл. То есть файл targz.tar будет автоматически удален после того как будет создан файлtargz.tar.gz. Чтобы распаковать gz-архив нужно воспользоваться командой gunzip:
$ gunzip targz.tar.gz
Таким образом, чтобы распаковать tar.gz-архив можно воспользоваться командами tar и gunzip:
$ gunzip targz.tar.gz
$ tar -xvf targz.tar
или использовать команду tar c дополнительным ключом — z, который автоматически вызывает команду gunzip для распаковки gz-архива:
$ tar -xvzf targz.tar.gz
В результате получим исходный каталог targz. Еще одна полезная, хотя и немного громоздкая конструкция которая позволяет вывести в консоли содержимое tar.gz-архива не распаковывая его:
$ gzip -dc targz.tar.gz 2>/dev/null | tar tvvf —
Итак, мы научились распаковывать tar.gz-архивы в которых распространяются исходные коды многих программ . Об этом говорит сайт https://intellect.icu . Теперь посмотрим как из них скомпилировать программу и установить ее. Для примера я предлагаю воспользоваться исходными кодами http-сервера — mini_httpd. Скачать можно отсюда. Давайте познакомимся с основными служебными файлами, которые как правило содержаться в source-кодах. Распаковываем tar.gz-архив:
$ tar -xzvf mini_httpd-1.19.tar.gz
Переходим в каталог с исходниками и смотрим его содержимое:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ cd ./mini_httpd-1.19/
$ ls -l
итого 192
drwxr-xr-x 3 igor igor 4096 2003-12-20 06:05 contrib
-r—r—r— 1 igor igor 340 2001-12-22 20:54 FILES
-r—r—r— 1 igor igor 414 1999-09-28 21:49 htpasswd.1
-r—r—r— 1 igor igor 4959 2001-12-19 02:08 htpasswd.c
-r—r—r— 1 igor igor 326 2005-06-29 20:32 index.html
-rw-r—r— 1 igor igor 3140 2002-11-02 01:02 Makefile
-r—r—r— 1 igor igor 2661 2005-06-29 20:31 match.c
-r—r—r— 1 igor igor 1679 2005-06-29 20:31 match.h
-rw-r—r— 1 igor igor 199 2001-12-23 22:09 mime_encodings.txt
-rw-r—r— 1 igor igor 4632 2003-10-26 19:00 mime_types.txt
-r—r—r— 1 igor igor 16625 2005-06-29 20:31 mini_httpd.8
-r—r—r— 1 igor igor 88322 2005-06-29 20:31 mini_httpd.c
-r—r—r— 1 igor igor 1132 2001-12-20 09:14 mini_httpd.cnf
-r—r—r— 1 igor igor 2249 2002-07-30 21:45 port.h
-r—r—r— 1 igor igor 2157 2005-06-29 20:31 README
drwxr-xr-x 2 igor igor 4096 2003-12-20 06:05 scripts
-r—r—r— 1 igor igor 8284 2005-06-29 20:31 tdate_parse.c
-r—r—r— 1 igor igor 1575 2005-06-29 20:31 tdate_parse.h
-r—r—r— 1 igor igor 231 2003-12-20 06:03 version.h
Правилом хорошего тона является наличие в исходных кодах файла README в котором разработчики описывают, для чего нужен пакет, что он выполняет, предназначение основных исходных файлов, условия компиляции и прочую информацию, которую разработчики считают необходимой написать. Следующий важный файл — это файл Makefile. Этот файл предназначен для утилиты make.
Утилита makeпредназначена для того, чтобы реализовать в автоматическом режиме некий алгоритм действий, необходимый для компиляции или установки приложения. Этот алгоритм действий и описан в файле Makefile. Будем говорить, что утилита make реализует цель описанную в файле Makefile. Целей может быть несколько. Откроем командой less Makefile и посмотрим часть его содержимого:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
all: mini_httpd htpasswd
mini_httpd: mini_httpd.o match.o tdate_parse.o
$ $ $ mini_httpd.o match.o tdate_parse.o $ -o mini_httpd
mini_httpd.o: mini_httpd.c version.h port.h match.h tdate_parse.h mime_encodings.h mime_types.h
$ $ -c mini_httpd.c
match.o: match.c match.h
$ $ -c match.c
tdate_parse.o: tdate_parse.c tdate_parse.h
$ $ -c tdate_parse.c
.
В самом начале идет инициализация переменных, которые будут использоваться в Makefile. Например, переменная BINDIR = /usr/local/sbin. Затем идет вот такая конструкция:
all: mini_httpd htpasswd
all — это и есть имя цели. Справа от двоеточия идет условие выполнения этой цели. Эта строка читается так: цель all будет достигнута тогда, когда будут достигнуты цели mini_httpd и htpasswd. Давайте посмотрим на цель mini_httpd:
mini_httpd: mini_httpd.o match.o tdate_parse.o
$ $ $ mini_httpd.o match.o tdate_parse.o $ -o mini_httpd
Цель mini_httpd в свою очередь будет достигнута тогда когда будет успешно выполнена команда $ $ $ mini_httpd.o match.o tdate_parse.o $ -o mini_httpd в результате которой должен скомпилироваться бинарный файл mini_httpd. Но, чтобы файл был успешно скомпилирован должны быть достигнуты цели mini_httpd.o, match.o и tdate_parse.o. И так далее по цепочке.
Одна цель зависит от другой. Как следует понимать строку $ $ $ mini_httpd.o match.o tdate_parse.o $ -o mini_httpd? Очень просто. Путем подстановки значений переменных, она преобразуется к виду:
gcc -s mini_httpd.o match.o tdate_parse.o -lcrypt -o mini_httpd
gcc — это стандартный компилятор Linux для языков С/С++. То есть если в командной строке набрать make mini_httpd, то будет выполнена цепочка действий описанных в файле Makefile, после которых в случае успеха будет создан бинарный файл в каталоге с исходными кодами. Другие цели которые есть в Makefile это install, clean и tar. Цель clean очищает каталок с исходными кодами от промежуточных файлов компиляции оставляя только исходники. Цель tar создает tar.gz-архив. А цель installвыполняет установку приложения в систему:
install: all
rm -f $/mini_httpd $/htpasswd
-mkdir -p $
cp mini_httpd htpasswd $
rm -f $/man8/mini_httpd.8 $/man1/htpasswd.1
-mkdir -p $/man8
cp mini_httpd.8 $/man8
-mkdir -p $/man1
cp htpasswd.1 $/man1
Как видите для того чтобы цель install была успешно выполнена, необходимо, чтобы была выполнена цель all, а установка подразумевает под собой простую операцию копирования скомпилированных файлов в соответствующие каталоги файловой системы. Таким образом, если в каталоге с исходными файлами присутствует Makefile, то можно приступать к компиляции.
По умолчанию команда make без указания цели будет выполнять цель all. То есть makeравносильно make all. После успешного выполнения команды make можно выполнять команду make install, которая завершить установку программы в системе. Если в каталоге с исходниками нет файла Makefile, а есть файл Makefile.in, значит должен быть скрипт config. Скрипт config проверяет систему и создает файл Makefile. Таким образом в общем случае команды для установки программы из исходных кодов при отсутствии файла Makefile будут такими:
$ ./config
$ make
$ make install
Если выполнить команду make в каталоге ./mini_httpd-1.19/, то получим ошибку компиляции целиhtpasswd.o, соответственно цель all не может быть реализована. В файле README написано, что утилитаhtpasswd предназначена для смены пароля. Основной же файл это mini_httpd. Поэтому, чтобы установить сервер, хотя бы частично можно написать так:
Источник: intellect.icu
Компиляция файла в linux
Основы компиляции программ из исходного кода в Linux
Время от времени вам может понадобиться скомпилировать программу из исходного кода. Это включает компиляцию кода C или C++ во что-то, что мы можем запустить в Linux. В зависимости от программного обеспечения, которое вы хотите скомпилировать, часто делать это необязательно, так как ваш дистрибутив, скорее всего, уже будет иметь двоичный пакет программы в репозиториях программного обеспечения. Фактически, вы должны выбрать бинарные пакеты или компиляцию из исходного кода. Однако, если когда-либо вам нужно будет скомпилировать исходный код, это руководство даст вам некоторые основные знания данного процесса.
Типичный пример
Возьмем программу, написанную на C или C++. Загрузка исходного кода часто связана с загрузкой и распаковкой пакета или клонированием репозитория git. Типичным является выполнение этих трех команд: Первая команда запускает скрипт configure, который анализирует библиотеки, установленные в вашей системе.
Если требуемая для компиляции библиотека не установлена, он сообщит об этом, и вам нужно будет установить ее. Вам понадобится не только библиотека, но и файлы разработчика. Файлы с исходным кодом используют функции, имеющиеся в этих библиотеках. После выполнения команды configure у вас должен быть создан файл Makefile. При запуске make, эта утилита будет читать Makefile в текущем каталоге и запустит компилятор (gcc для C или g ++ для C++) для компиляции программного обеспечения.
Третья команда не является строго необходимой, но рекомендуется для обеспечения общесистемного доступа к вашей программе, чтобы запускать исполняемый файл в терминале из любого места. Эта команда говорит «make» запустить инструкции по установке программы в систему.
Файлы INSTALL или README
Могут иметься дополнительные инструкции, которые должны быть выполнены до начала компиляции. Чтение этого файла (как правило, INSTALL) также поможет узнать, какие библиотеки разработчиков, возможно, потребуется установить в первую очередь. Такие пакеты будут содержать суффикс «-dev», чтобы показать, что они относятся к разработке и должны быть установлены для компиляции.
Сценарий configure также может потребовать дополнительных параметров. README содержат любую другую информацию. Вы даже можете обнаружить, что ни одна из трех команд не запускается. Вместо этого может использоваться другой вариант make, например qmake (для проектов Qt) или cmake.
Установка программы с GitHub
Начнем с установки текстового редактора wxMEdit, найденного на GitHub. Здесь я демонстрирую, как установить программу путем компиляции из исходного кода. Это типичный пример. Если вы посетите репозиторий GitHub, вы увидите, что файл readme содержит сведения о приложении. Никаких инструкций по компиляции нет, поэтому применяется стандартная последовательность с одной разницей: autogen.sh. Сначала мы переходим в каталог, где хотим хранить репозиторий, и клонируем его:
Autogen.sh
Если вы найдете этот файл в исходном коде, вы должны запустить его перед “./configure”, так как он выполнит задачи, которые позволят вам успешно скомпилировать программное обеспечение. Если он отработал успешно, вы можете запустить “./configure”, “make”, а затем «sudo make install» и это все, что вам нужно запустить (в данном случае ничего больше).
В выводе make не должно быть ошибок.
Решение проблем
Если вы делаете это регулярно, вы должны столкнуться с определенными проблемами при компиляции из исходного кода.
Отсутствующие библиотеки
Помните, недостаточно установленных бинарных библиотек; также должны быть установлены исходные файлы или заголовки для разработчиков . Сценарий configure вместе с документацией обычно предупреждает вас о любых библиотеках (заголовках), которые необходимо установить для успешной компиляции. Убедитесь, что они установлены в вашей системе.
Заключение
Компиляция программного обеспечения может быть довольно простой или довольно болезненной. К счастью, многие дистрибутивы Linux предоставляют двоичные пакеты, готовые к установке, поэтому компиляция из исходного кода обычно не требуется. Лучше придерживаться бинарных пакетов, предоставляемых репозиториями, если они доступны. Другие статьи о компиляции программ из исходного кода на нашем сайте: Источник
LibreBay
Статьи про ОС Ubuntu. Языки программирования Си и C++.
Инструменты разработки и многое другое.
понедельник, 5 декабря 2016 г.
Как скомпилировать программу на C/C++ в Ubuntu
Помню, когда я только начинал программировать, у меня возник вопрос: «Как скомпилировать программу на C в Ubuntu?» Для новичков это не легкая задача, как может показаться на первый взгляд. Мой путь изучения C начался с бестселлера «Брайан Керниган, Деннис Ритчи, Язык программирования C, 2-е издание». Там рассказывается как скомпилировать программу в операционной системе Unix, но этот способ не работает в Linux. Авторы книги выкрутились, написав следующее:
В других системах это процедура будет отличаться. Обратитесь к справочнику или специалисту за подробностями.
Текстовый редактор gedit
Для написания первых программ подойдет обычный, используемый по умолчанию в Ubuntu, текстовый редактор с подсветкой синтаксиса — gedit.
![]() |
Рис. 1. Запуск текстового редактора. |
Первой программой по традиции является «Hello, World!», выводящее приветствие на экран: Печатаем или копируем текст программы в gedit и сохраняем в файл Hello.c , например, на рабочий стол. Не самое лучше место для сохранения, но это позволит рассмотреть случай, когда в имени директории содержится пробел.
![]() |
Рис. 2. Программа hello, World. |
Компиляция программы на C
Для установки требуется ввести пароль, при вводе которого может сложиться впечатление, что ничего не происходит, но на самом деле терминал просто в целях безопасности не отображает символы. Далее в терминале нам необходимо перейти в директорию, куда сохранили файл с текстом программы. Перемещение выполняется командой cd (англ. change directory — изменить каталог). Чтобы воспользоваться командой в начале пишется cd , затем через пробел путь , куда нужно перейти. Для перехода на рабочий стол, команда будет следующей:
Обратите внимание на символ обратной косой черты в имени директории Рабочий стол . Обратная косая экранирует пробел, и сообщает команде cd , что пробел и следующие за ним символы являются частью имени. Символ в начале пути обозначает путь до домашней папки пользователя. Для просмотра содержимого директории применяется команда ls (сокращение от англ. list).
![]() |
Рис. 3. Работа в терминале. |
- gcc — компилятор для языка программирования C;
- -Wall — ключ вывода всех предупреждений компилятора;
- -o hello — с помощью ключа -o указывается имя выходного файла;
- hello.c — имя нашего исходного файла, который компилируем.
Выполнив команду ls , увидим, что появилась наша скомпилированная программа hello , отмеченная цветом, обозначающим исполняемые программы.
В завершение запустим hello , вводом имени программы с префиксом ./ :
Префикс ./ сообщает терминалу о необходимости выполнить программу с заданным именем в текущем каталоге. (Точка — это условное название текущего каталога.)
![]() |
Рис. 4. Работа в терминале, продолжение. |
Компиляция программы на С++
Программы на C++ компилируются аналогично, как и программы на C. «Hello, World!» на C++ можно написать так:
Сохраняем текст программы в файл под именем hello2.cpp . Таким образом, команда компилирования будет иметь вид:
Для запуска результата вводим в терминале: