Программирование на c в linux с нуля. Программирование на Си (C) в Ubuntu (Linux)

Помню, когда я только начинал программировать, у меня возник вопрос: «Как скомпилировать программу на C в Ubuntu?» Для новичков это не легкая задача, как может показаться на первый взгляд.

Мой путь изучения C начался с бестселлера «Брайан Керниган, Деннис Ритчи, Язык программирования C, 2-е издание» . Там рассказывается как скомпилировать программу в операционной системе Unix, но этот способ не работает в Linux. Авторы книги выкрутились, написав следующее:

В других системах это процедура будет отличаться. Обратитесь к справочнику или специалисту за подробностями.

Побуду специалистом:) и расскажу в данной статье, как скомпилировать первые программы на C и заодно на C++ в терминале Ubuntu.

Текстовый редактор gedit

Для написания первых программ подойдет обычный, используемый по умолчанию в Ubuntu, текстовый редактор с подсветкой синтаксиса — gedit.

Рис. 1. Запуск текстового редактора.

Первой программой по традиции является «Hello, World!» , выводящее приветствие на экран:

#include int main(int argc, char **argv) { puts("Hello, world!"); return 0; }
Печатаем или копируем текст программы в gedit и сохраняем в файл Hello.c , например, на рабочий стол. Не самое лучше место для сохранения, но это позволит рассмотреть случай, когда в имени директории содержится пробел.


Рис. 2. Программа hello, World.

Компиляция программы на C

Теперь запускаем терминал, можно через Dash, а можно с помощью горячих клавиш + + . Здесь в начале установим инструменты сборки, куда входят необходимые компиляторы gcc для языка C и g++ для языка C++:

Sudo apt install build-essential
Для установки требуется ввести пароль, при вводе которого может сложиться впечатление, что ничего не происходит, но на самом деле терминал просто в целях безопасности не отображает символы.

Далее в терминале нам необходимо перейти в директорию, куда сохранили файл с текстом программы. Перемещение выполняется командой cd (англ. change directory — изменить каталог). Чтобы воспользоваться командой в начале пишется cd , затем через пробел путь, куда нужно перейти.

Для перехода на рабочий стол, команда будет следующей:

Cd ~/Рабочий\ стол
Обратите внимание на символ обратной косой черты \ в имени директории Рабочий стол. Обратная косая экранирует пробел, и сообщает команде cd , что пробел и следующие за ним символы являются частью имени. Символ ~ в начале пути обозначает путь до домашней папки пользователя.

Для просмотра содержимого директории применяется команда ls (сокращение от англ. list).

Команда компиляции для программы на C выглядит следующим образом:

Gcc -Wall -o hello hello.c
где:

  • gcc — компилятор для языка программирования C;
  • -Wall — ключ вывода всех предупреждений компилятора;
  • -o hello — с помощью ключа -o указывается имя выходного файла;
  • hello.c — имя нашего исходного файла, который компилируем.
Выполнив команду ls , увидим, что появилась наша скомпилированная программа hello , отмеченная цветом, обозначающим исполняемые программы.

В завершение запустим hello , вводом имени программы с префиксом./ :

./hello
Префикс./ сообщает терминалу о необходимости выполнить программу с заданным именем в текущем каталоге. (Точка — это условное название текущего каталога.)

Компиляция программы на С++

Программы на C++ компилируются аналогично, как и программы на C. «Hello, World!» на C++ можно написать так:

#include int main(int argc, char **argv) { std::cout << "Hello, World!" << std::endl; return 0; }
Сохраняем текст программы в файл под именем hello2.cpp . Таким образом, команда компилирования будет иметь вид:

G++ -Wall -o hello2 hello2.cpp
Для запуска результата вводим в терминале:

Заключение

Данный способ позволяет скомпилировать программу лишь из одного файла с исходным кодом. Но этого вполне достаточно, чтобы начать изучение языков программирования C/C++ по книгам или по статьям в интернете.

Более подробно об программировании в Ubuntu или в любом другом дистрибутиве Linux можно прочитать в книгах:

  • Иванов Н. Н. — Программирование в Linux. Самоучитель. — 2-е издание;
  • Нейл Метьэ, Ричард Стоунс — Основы программирования в Linux: Пер. с англ. — 4-е издание;
  • Колисниченко Д. Н. — Разработка Linux-приложений.

Название : Программирование на C++ в Linux.

Книга "Программирование на C++ в Linux" посвящена разработке приложений на С++ в среде разработки KDEvelop. Автор книги дает подробное описание взаимодействий компонентов приложений, рассматривает основы работы с утилитой Qt Designer и обсуждает элементы управления в диалоговых окнах и классы, для которых они созданы. Книга учит концепции Документ/Представление, созданию элементов интерфейса приложения. Затрагиваются и такие темы, как сохранение и восстановление различной информации, выводимой на экран, разработке текстовых редакторов, организации многозадачности в приложениях на основе взаимодействующих процессов, работе с шаблонами классов и функций. Как заключение, автор дает полезные рекомендации по созданию справочной системы для разработанного приложения. Книга предназначена для профессиональных программистов.


Книга посвящена созданию приложений, написанных на языке C++, в среде разработки KDevelop. Дано описание способов взаимодействия компонентов приложений. Рассмотрена работа с утилитой Qt Designer и описаны основные элементы управления, используемые в диалоговых окнах, а также классы, созданные для работы с ними. Читатель знакомится с концепцией Документ/Представление и учится создавать элементы пользовательского интерфейса приложения. Кроме того, в отдельных главах разбираются вопросы вывода на экран различной информации, сохранения и восстановления ее из файла, создания текстовых редакторов, работы с шаблонами классов и функций и организации многозадачности в приложении на основе взаимодействующих процессов. В завершение предоставляются рекомендации по созданию справочной системы приложения.

Содержание :
Введение
Для кого предназначена эта книга?
Структура книги
Соглашения, принятые в данной книге
Требования к аппаратным средствам и программному обеспечению
Глава 1 Взаимодействие компонентов приложения
Сигналы и приемники
Посылка сигналов
Реализация приемников
Реализация соединения
Обработка событий
Работа с окном
Работа с фокусом ввода
Работа с мышью
Работа с клавиатурой
Реализация перетаскивания
Фильтры событий
Синтетические события
Последовательность обработки событий
Заключение
Глава 2 Диалоговые окна и простейшие элементы управления
Создание диалогового приложения
Создание заготовки приложения
Создание заготовки диалогового окна
Завершение создания диалогового приложения
Создание специализированных диалоговых окон
Создание диалогового окна с вкладками
Создание мастера
Глава 3 Классы элементов управления
Класс списка
Классы линейного регулятора и линейного индикатора
Работа с датой и временем
Глава 4 Классы приложений, документов и представлений
Многооконное приложение Qt
Класс документа
Класс представления
Класс приложения
Многооконное приложение KDE
Класс документа
Класс представления
Класс приложения
Глава 5 Создание элементов пользовательского интерфейса
Пользовательский интерфейс библиотеки Qt
Внесение изменений в меню
Работа со строкой состояния
Пользовательский интерфейс приложений KDE
Внесение изменений в меню
Настройка панели инструментов
Работа со строкой состояния
Глава 6 Вывод информации на экран
Рисование фигур
Работа с кистью
Перерисовка окна
Синхронизация объектов представления
Вывод текста
Работа с битовыми образами
Алпаратно-зависимые битовые образы
Аппаратно-независимые битовые образы
Глава 1 Работа с файлами документов
Сохранение и восстановление информации в приложении
Настройка диалоговых окон
Внесение изменений в меню
Установка рабочего каталога
Глава 8 Работа с текстовыми документами
Создание простейшего текстового редактора
Создание более сложного редактора
Создание редактора KDE
Глава 9 Шаблоны и классы коллекций
Шаблоны
Понятие шаблона
Шаблоны функций
Шаблоны классов
Классы коллекций
Виды классов коллекций
Массивы
Связные списки
Карты отображений
Другие классы коллекций
Глава 10 Реализация многозадачности в приложении
Взаимодействие процессов
Создание клиента для простейшего сервера
Создание более сложного сервера
Создание клиента
Некоторые замечания
Глава 11 Справка в приложении
Формы представления справочной информации
Способы доступа к справочной системе
Способы представления справочной информации
Формы представления информации
Программирование контекстной справки
Вывод подсказок
Вывод справочной информации в строку состояния
Получение информации по конкретному элементу
пользовательского интерфейса
Программирование командной справки
Формат файлов командной справки приложений Qt
Создание демонстрационного приложения Qt
Приложение 1 Что на CD
Приложение 2 Ресурсы Интернета
Предметный указатель

Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Программирование на C++ в Linux - Николай Секунов - fileskachat.com, быстрое и бесплатное скачивание.

Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.

Всем привет! Это первая статья о программировании на Си, в котором мы настроим тестовый редактор и узнаем немного о истории языка Си, возможностях, преимуществах и недостатках.

Языку Си в 2012 году исполнилось 40 лет. Си стал родоначальником C++, Java, Perl, C#, JavaScript и тд. Это самый популярный язык программирования в мире. Си процедурный язык программирования. Файлы кода имеют расширение.c а заголовочные файлы.h. На Си вы можете программировать для Linux, Windows, Windows Phone, Mac OS, iOS, Android и тд. Любой программист должен владеть языком программирования Си. Что бы стать программистом читать одних книг и статей мало. Нужно еще и практиковать. Поэтому мы рассмотрим наши уроки обязательно с примерами. Если у вас возникнет какие то вопросы, то можете задавать в комментариях. Так же этим мануалом могут пользоваться пользователи Windows и Mac OS. Пользователи других ОС могут пользоваться например NetBeans в качестве компилятора (NetBeans поддерживает не только Си но и Java, PHP, C++, Python и Ruby)

Настройка

Для программирования на понадобится текстовый редактор (gedit) и компилятор (gcc - входит в состав Ubuntu). Компилятор настраивать не нужно, а вот текстовый редактор настроим сейчас.

Откройте Правка -> Настройки . Установите галочки на следующие пункты:

  • Показывать номера строк;
  • Подсвечивать текущую строку;
  • Подсвечивать парные скобки;
  • Можно так же изменить тему в вкладке Шрифты и цвета.

Пара выполненных «махинаций» с gedit упростят на работу с текстовым редактором. А в дальнейшем мы рассмотрим какой-нибудь IDE (интегрирования среда разработки).

Песочница

Леонид Якубович 15 марта 2014 в 13:20

Обучение С++. Что если начать на Linux?

Накипело!

В нынешней системе школьного образования заточка под операционную систему Microsoft поражает: за очень редким исключением вы сможете где-нибудь увидеть что-то вроде Edubuntu или русский ALT Linux, но остальном это Windows. По моему мнению, давно пора еще в школах знакомить детей с другим взглядом на то, каким должен быть интерфейс между человеком и железом, а не искать общих путей. Может быть именно такой сравнительно-аналитический взгляд на вещи позволит поднять крайне низкий уровень компьютерной грамотности у выпускников школ, которые даже не могут оформить текст в Word или составить добротную презентацию в PowerPoint.

Искренне удивляет, что в школах считается сверхсложным и даже мистическим составлять двумерные массивы в том же Pascal"e, который к слову, тоже давным давно пора заменить на более гибкий и удобный Python или JavaScript. Уважаемые преподаватели, какой должна быть мотивация ученика, если его учат на мертвом языке? Мы же для закрепления правил грамматики не учим сперва славянский, а потом русский и другие. Так какого черта?!

Учитывая модность профессии программиста и определенную романтику в головах молодых людей, навеянную голливудским кино, люди поступают в ВУЗы и сталкиются с рядом сложностей: их голова начинает резко расширяться, что неминуемо приводит сперва к усталости, а затем и к разочарованию в своем выборе. Факт остается фактом: если вы связываете себя с профессией, которая требует постоянного самосовершенствования, то начинайте это делать еще до поступления. Есть множество материалов, который помогут вам быть более подготовленными в процессе учебы и позволит найти работу по специальности уже к 3-4 курсу обучения. Шевелитесь!

На фоне таких рассуждений ко мне пришла сделать небольшой туториал по тому, как написать, скомпилировать и запустить программу на C++ в Linux без специальных средств (IDE). Такой подход сможет познакомить начинающего программиста с процессом разработки в наиболее тривиальном виде, а также с принципиально новой для него операционной системой Linux. В конце своего хабрапоста я напишу список литературы и полезные ссылки.

Начнем с того, что нам понадобится:
-Дистрибутив Linux (возьмем Ubuntu);
-Установленный компилятор g++;
-Обычный текстовый редактор (gedit);
-Терминал;

Поехали!

1. Установка Linux и необходимого софта.
Скачиваем с официального сайта ubuntu.ru образ дистрибутива Linux Ubuntu. Хотелось бы также добавить, что не рекомендую использовать Wubi. Делаем нормальную установку либо на наш жесткий диск, либо в виртуальной машине. Записываем с помощью Nero или ImgBurn образ на диск. Перезагружаемся и заходим в BIOS, где нам нужно выставить приоритет загрузки с CD/DVD - привода. Сохраняем настройки и выходим. Загружаемся с диска и устанавливаем операционную систему. (Более подробная информация будет в ссылке ниже). Текстовый редактор, терминал у нас есть по умолчанию. Для того, чтобы установить компилятор g++ открываем терминал с помощью комбинации alt+ctrl+T и вводим: sudo apt-get install g++ . Нас попросят ввести пароль, вводим, нажимаем Enter. Готово.
2. Создание cpp-файла.
Открываем домашнюю папку в файловом менеджере Nautilus и параллельно открываем терминал alt+ctrl+t. В нем пишем команду touch helloworld.cpp. Команда touch создаст файл с нужным вам названием. Теперь можно свернуть терминал и сфокусироваться на Nautilus"e. Открываем наш файл и пишем самый популярный в мире код:

#include using namespace std; int main(){ cout << "Hello world!"; return 0; }

Закрываем, сохраняем.

3.Компиляция и запуск.
Снова открываем терминал и вызываем наш компилятор командой g++ -lm -o output helloworld.cpp . g++ - собственно наш компилятор, а -lm и -o это параметры-ключи, с которыми мы его запускаем. output - имея файла вывода, куда помещается результат нашей компиляции и следом за ним имя нашего cpp-файла. Нажимаем enter, если программа верна, то никаких сообщений не будет. Теперь, чтобы запустить программу введем в терминале следующее: ./output и нажмем enter. На экране выведен результат «Hello world!».
Вот вы и написали свою первую программу на C++ для Linux! Поздравляю вас и желаю успехов в расностороннем и качественном обучении. Ваша компетентность в ваших руках, помните об этом.

P.S. Если хотя бы один школьник проделает то, что я написал, буду считать, что моя миссия выполнена. Всем добра!
P.S.S. Ссылки.

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

Для подготовки программы к выполнению, специальная программа собирает ее из исходного кода на языке программирования в машинный код - команды процессора. Этот процесс называется компиляция. Linux - это свободное программное обеспечение, а поэтому исходные коды программ доступны всем желающим. Если программы нет в репозитории или вы хотите сделать что-то нестандартное, то вы можете выполнить компиляцию программы.

В этой статье мы рассмотрим, как выполняется компиляция программ Linux, как происходит процесс компиляции, а также рассмотрим насколько гибко вы сможете все настроить.

Мы будем компилировать программы, написанные на Си или С++, так как это наиболее используемый язык для программ, которые требуют компиляции. Мы уже немного рассматривали эту тему в статье установка из tar.gz в Linux, но та статья ориентирована больше на новичков, которым нужно не столько разобраться, сколько получить готовую программу.

В этой же статье тема рассмотрена более детально. Как вы понимаете, для превращения исходного кода в команды процессора нужно специальное программное обеспечение. Мы будем использовать компилятор GCC. Для установки его и всех необходимых инструментов в Ubuntu выполните:

sudo apt install build-essential manpages-dev git automake autoconf

Затем вы можете проверить правильность установки и версию компилятора:

Но перед тем как переходить к самой компиляции программ рассмотрим более подробно составляющие этого процесса.

Как выполняется компиляция?

Компиляция программы Linux - это довольно сложный процесс. Все еще сложнее, потому что код программы содержится не в одном файле и даже не во всех файлах ее исходников. Каждая программа использует множество системных библиотек, которые содержат стандартные функции. К тому же один и тот же код должен работать в различных системах, содержащих различные версии библиотек.

На первом этапе, еще до того как начнется непосредственно компиляция, специальный инструмент должен проверить совместима ли ваша система с программой, а также есть ли все необходимые библиотеки. Если чего-либо нет, то будет выдана ошибка и вам придется устранить проблему.

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

Затем все объектные файлы собираются в одну программу, связываются с системными библиотеками. После завершения этого этапа программу остается только установить в файловую систему и все. Вот такие основные фазы компиляции программы, а теперь перейдем ближе к практике.

Компиляция программ Linux

Первое что нам понадобиться - это исходники самой программы. В этом примере мы будем собирать самую последнюю версию vim. Это вполне нейтральная программа, достаточно простая и нужная всем, поэтому она отлично подойдет для примера.

Получение исходников

Первое что нам понадобиться, это исходные коды программы, которые можно взять на GitHub. Вы можете найти исходники для большинства программ Linux на GitHub. Кроме того, там же есть инструкции по сборке:

Давайте загрузим сами исходники нашей программы с помощью утилиты git:

git clone https://github.com/vim/vim

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

Настройка configure

Дальше нам нужно запустить скрипт, который проверит нашу программу на совместимость с системой и настроит параметры компиляции. Он называется configure и поставляется разработчиками программы вместе с исходниками. Весь процесс компиляции описан в файле Makefile, его будет создавать эта утилита.

Если configure нет в папке с исходниками, вы можете попытаться выполнить такие скрипты чтобы его создать:

./bootstrap
$ ./autogen.sh

Также для создания этого скрипта можно воспользоваться утилитой automake:

aclocal
$ autoheader
$ automake --gnu --add-missing --copy --foreign
$ autoconf -f -Wall

Утилита automake и другие из ее набора генерируют необходимые файлы на основе файла Mackefile.am. Этот файл обязательно есть в большинстве проектов.

После того как вы получили configure мы можем переходить к настройке. Одним из огромных плюсов ручной сборки программ есть то, что вы можете сами выбрать с какими опциями собирать программу, где она будет размещена и какие дополнительные возможности стоит включить. Все это настраивается с помощью configure. Полный набор опций можно посмотреть, выполнив:

./configure --help

Рассмотрим наиболее часто используемые, стандартные для всех программ опции:

  • --prefix=PREFIX - папка для установки программы, вместо /, например, может быть /usr/local/, тогда все файлы будут распространены не по основной файловой системе, а в /usr/local;
  • --bindir=DIR - папка для размещения исполняемых файлов, должна находится в PREFIX;
  • --libdir=DIR - папка для размещения и поиска библиотек по умолчанию, тоже в PREFIX;
  • --includedir=DIR - папка для размещения man страниц;
  • --disable-возможность - отключить указанную возможность;
  • --enable-возможность - включить возможность;
  • --with-библиотека - подобно enable активирует указанную библиотеку или заголовочный файл;
  • --without-библиотека - подобное disable отключает использование библиотеки.

Вы можете выполнить configure без опций, чтобы использовать значения по умолчанию, но также можете вручную указать нужные пути. В нашем случае./configure есть, и мы можем его использовать:

Во время настройки утилита будет проверять, есть ли все необходимые библиотеки в системе, и если нет, вам придется их установить или отключить эту функцию, если это возможно. Например, может возникнуть такая ошибка: no terminal library found checking for tgetent()... configure: error: NOT FOUND!

В таком случае нам необходимо установить требуемую библиотеку. Например, программа предлагает ncurses, поэтому ставим:

sudo apt install libncurces-dev

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

Сборка программы

Когда настройка будет завершена и Makefile будет готов, вы сможете перейти непосредственно к сборке программы. На этом этапе выполняется непосредственно преобразование исходного кода в машинный. Утилита make на основе Makefile сделает все необходимые действия:

После этого программа будет установлена в указанную вами папку, и вы сможете ее использовать. Но более правильный путь - создавать пакет для установки программы, это делается с помощью утилиты checkinstall, она позволяет создавать как deb, так и rpm пакеты, поэтому может использоваться не только в Ubuntu. Вместо make install выполните:

Затем просто установите получившийся пакет с помощью dpkg:

sudo dpkg install vim.deb

После этого сборка программы полностью завершена и установлена, так что вы можете переходить к полноценному использованию.

Если вы устанавливали программу с помощью make install, то удалить ее можно выполнив в той же папке обратную команду:

sudo make uninstall

Команда удалит все файлы, которые были скопированы в файловую систему.

Выводы

В этой статье мы рассмотрели, как выполняется компиляция программы Linux. Этот процесс может быть сложным для новичков, но в целом, все возможно, если потратить на решение задачи несколько часов. Если у вас остались вопросы, спрашивайте в комментариях!

На завершение видео о том, что такое компилятор и интерпретатор: