Программирование линукс для программирования

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

Накипело!

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

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

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

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

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

Источник

Программирование под Linux

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

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

1. На чем пишут программы?

Исторически сложилось так, что ядро Unix было написано на языке Си. Даже более того, этот язык был создан для написания ядра Unix. Поскольку ядро Linux было основано на ядре Minix (версии Unix), то оно тоже было написано на Си. Поэтому можно сказать, что основной язык программирования для Linux это Си и С++. Такая тенденция сохранялась на протяжении долгого времени.

А вообще, писать программы для Linux можно почти на любом языке начиная от Java и Python и заканчивая С# и даже Pascal. Для всех языков есть компиляторы и интерпретаторы. Писать программы на С++ сложно, а Си многими уже считается устаревшим, поэтому множество программистов используют другие языки для написания программ. Например, множество системных инструментов написаны на Python или Perl. Большинство программ от команды Linux Mint, установщик Ubuntu и некоторые скрипты apt написаны на Python. Множество скриптов, в том числе простые скрипты оптимизации написаны на Perl. Иногда для скриптов используется Ruby. Это скрипты OpenShift или, например, фреймворк Metasploit. Некоторые разработчики кроссплатформенных программ используют Java. Но основные компоненты системы написаны все же на Си.

Мы не будем рассматривать основы Си в этой статье. Си — сложный язык и вам понадобится прочитать как минимум одну книгу и много практиковаться чтобы его освоить. Мы рассмотрим как писать программы на Си в Linux, как их собирать и запускать.

2. Библиотеки

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

Читайте также:  Фотосканеры для windows 10

Библиотеки делятся на два типа:

  • Статические — они связываются с программой на этапе компиляции, они связываются и после этого все функции библиотеки доступны в программе как родные. Такие библиотеки имеют расширение .a;
  • Динамические — такие библиотеки встречаются намного чаще, они загружены в оперативную память, и связываются с программной динамически. Когда программе нужна какая-либо библиотека, она просто вызывает ее по известному адресу в оперативной памяти. Это позволяет экономить память. Расширение этих библиотек — .so, которое походит от Shared Object.

Таким образом, для любой программы на Си нужно подключать библиотеки, и все программы используют какие-либо библиотеки. Также важно заметить, на каком языке бы вы не надумали писать, в конечном итоге все будет сведено к системным библиотекам Си. Например, вы пишите программу на Python, используете стандартные возможности этого языка, а сам интерпретатор уже является программой на Си/С++, которая использует системные библиотеки для доступа к основным возможностям. Поэтому важно понимать как работают программы на Си. Конечно, есть языки, вроде Go, которые сразу переводятся на ассемблер, но там используются принципы те же, что и здесь. К тому же системное программирование linux, в основном, это Си или С++.

3. Процесс сборки программы

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

Каждая серьезная программа состоит из множества файлов, это файлы исходников с расширением .c и заголовочные файлы с расширением .h. Такие заголовочные файлы содержат функции, которые импортируются в программу из библиотек или других файлов .с. Перед тем. как компилятор сможет собрать программу и подготовить ее к работе, ему нужно проверить действительно ли все функции реализованы, доступны ли все статические библиотеки и собрать ее в один файл. Поэтому, первым делом выполняется препроцессор, который собирает исходный файл, выполняются такие инструкции, как include для включения кода заголовочных файлов.

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

Далее к работе приступает компоновщик. Его задача связать объектный модуль со статическими библиотеками и другими объектными модулями. Для каждого исходного файла создается отдельный объектный модуль. Только теперь программа может быть запущена.

А теперь, давайте рассмотрим весь єтот процесс на практике с использованием компилятора GCC.

4. Как собрать программу

Для сборки программ в Linux используется два типа компиляторов, это Gcc и Clang. Пока что GCC более распространен, поэтому рассматривать мы будем именно его. Обычно, программа уже установлена в вашей системе, если же нет, вы можете выполнить для установки в Ubuntu:

sudo apt install gcc

Перед тем как мы перейдем к написанию и сборке программы, давайте рассмотрим синтаксис и опции компилятора:

$ gcc опции исходный_файл_1.с -o готовый_файл

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

  • -o — записать результат в файл для вывода;
  • -c — создать объектный файл;
  • -x — указать тип файла;
  • -l — загрузить статическую библиотеку.

Собственно, это все самое основное, что нам понадобится. Теперь создадим нашу первую программу. Она будет выводить строку текста на экран и чтобы было интереснее, считать квадратный корень из числа 9. Вот исходный код:

int main() <
printf(«losst.ru\n»);
printf(«Корень: %f\n», sqrt(9));
return 0;
>

Я специально добавил функцию корня чтобы показать как работать с библиотеками. Сначала нужно собрать объектный файл. Перейдите в папку с исходниками и выполните:

gcc -c program.c -o program.o

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

gcc -lm program.o -o program

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

Конечно, все эти действия могут быть выполнены и с помощью различных графических сред, но выполняя все вручную, вы можете лучше понять как все работает. С помощью команды ldd вы можете посмотреть какие библиотеки использует наша программа:

Это две библиотеки загрузчика, стандартная libc и libm, которую мы подключили.

5. Автоматизация сборки

Когда мы рассматриваем программирование под Linux невозможно не отметить систему автоматизации сборки программ. Дело в том, что когда исходных файлов программы много, вы не будете вручную вводить команды для их компиляции. Можно записать их один раз, а затем использовать везде. Для этого существует утилита make и файлы Makefile. Этот файл состоит из целей и имеет такой синтаксис:

Читайте также:  Дисковая утилита не видит внешний жесткий диск mac os

цель: зависимости
команда

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

program: program.o
gcc -lm program.o -o program

program.o: program.c
gcc -c program.c -o program.o

Затем вам достаточно выполнить команду make для запуска компиляции, только не забудьте удалить предыдущие временные файлы и собранную программу:

Программа снова готова и вы можете ее запустить.

Выводы

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

Курс программирования на Си под Linux:

Источник

10 лучших открытых инструментов для разработчика в Linux

«Linux может быть великолепной средой для разработки программного обеспечения, но вам нужны правильные инструменты, чтобы использовать его на полную мощность», — говорит Джек Валлен (Jack Wallen).

Без надёжных инструментов разработки вы не сможете воспользоваться лучшими преимуществами Linux. К счастью, Linux и открытое инструментальное программное обеспечение легко доступно. Однако, если вы новый пользователь, вы можете не знать, какие утилиты лучше выбрать, так что вот 10 выдающихся инструментов, которые помогут поднять вашу разработку на другой уровень.

1. Bluefish

Bluefish — одна из популярнейших интегрированных сред разработки, доступных для работы в вебе. Bluefish может обрабатывать языки программирования и языки разметки, но фокусируется на создании динамических и интерактивных веб-сайтов. Как и многие приложения для Linux, Bluefish быстр и лёгок — он использует примерно 30‒40 процентов ресурсов, потребляемых аналогичными приложениями.

Bluefish может открывать несколько документов одновременно: до 3 500 документов, если необходимо. Он включает в себя поддержку проекта, удалённую поддержку файлов, поиск и замену (включая регулярные выражения), неограниченную отмену/принятие сделанных изменений, настраиваемую подсветку синтаксиса для многих языков, сглаживание текста в окнах, а также поддержку различных кодировок.

Одной из лучших особенностей Bluefish является Quickbar — пользовательская панель, которая позволяет вам добавлять кнопки путём кликания по правой клавише мыши и выбора пункта «Добавить в Quickbar» (Add To Quickbar). Вы можете добавлять в Quickbar любую HTML-кнопку.

В Bluefish есть ряд простых инструментов, которые помогут вам добавить различные элементы в ваш код. Нужен auto-submit select box в DHTML? Легко. Выберите «Auto-submit Select Box» из выпадающего списка «DHTML» и заполните необходимые пункты для добавления элемента в ваш код. В Bluefish есть мастера для Си, Apache, DHTML, DocBook, HTML, PHP+HTML и SQL. Если вы разрабатываете свои сайты вручную, то без Bluefish вам не обойтись.

2. Anjuta

Anjuta — свободная открытая интегрированная среда разработки для языков Си и C++. Anjuta мощна и проста в установке (например, команда urpmi anjuta в Mandriva Linux). Anjuta предлагает такие функции, как управление проектами, прикладные мастера, интерактивный отладчик и мощный редактор исходного кода — с просмотром кода, его автозаполнением и подсветкой синтаксиса.

Anjuta имеет гибкий интерфейс пользователя, который позволяет вам перемещать (drag-and-drop) инструменты в набор инструментов для организации интерфейса пользователя в вариант, который вам больше нравится. Плюс каждый размещённый пользователем набор инструментов постоянен для проекта, так что вы можете иметь различные наборы инструментов для каждого проекта.

Anjuta также имеет мощную систему плагинов, которая позволяет вам решать для каждого проекта какие плагины активны, а какие — нет. И, как во всех открытых проектах, вы можете сами разработать свои плагины для Anjuta.

Одним из самых мощных инструментов в Anjuta является менеджер проекта. Он не только может открывать почти все проекты, основанные на Automake и Autoconf; он не добавляет никакой информации, связанной с Anjuta, так что ваш проект также может обслуживаться и разрабатываться вне Anjuta.

3. Glade

Glade — это RAD-инструмент, используемый для создания инструментария GTK+ и для среды рабочего стола GNOME. Его интерфейс подобен GIMP и может быть настроен и даже встроен в Anjuta.

Glade включает в себя ряд шаблонов, таких как текстовые блоки, диалоги, чекбоксы и меню, созданных для ускорения разработки интерфейсов. Конструкции интерфейса хранятся в XML, который позволяет им быть легко связанным со внешними инструментами.

Установка Glade проста. Например, в Fedora вы можете запустить команду yum install glade3 . В Glade нет такого мощного менеджера проекта как в Anjuta, но вы можете создавать, редактировать и сохранять проекты с Glade.

4. GCC

GCC — это набор компиляторов для Си, C++, Objective-C, Фортрана, Java и Ады, разработанный в рамках проекта GNU. Это инструмент командной строки, но он очень мощен. Многие интегрированные среды разработки имеют инструменты, которые являются только front-end’ами для GCC. Наиболее часто используются компиляторы для кода на Си и C++.

Читайте также:  Epson stylus tx117 driver windows 10

Как один инструмент компилирует приложения на разных языках? Просто: для Си вы применяете команду gcc, а для C++ вы применяете команду g++ — два компилятора в одном инструментарие. И g++ — компилятор, а не просто препроцессор.

GCC построит объектный код из исходного кода без использования посредника. Этот метод создаёт лучший объектный код и даёт вам больше отладочной информации.

5. Kdevelop

Kdevelop был создан в 1998 году как простая в использовании интегрированная среда разработки для среды рабочего стола KDE. Kdevelop в настоящее время распространяется под лицензией GNU General Public License и свободен для использования.

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

Kdevelop поддерживает 15 языков программирования, каждый из которых имеет свои языковые особенности. Он также предлагает отладчик, систему управления версиями Subversion, мастера приложений, просмотрщик документации, управление сниппетами, интеграцию Doxygen, инструменты RAD, поддержку Ctags, переформатирование кода, поддержку QuickOpen и панель окон с панелью инструментов.

Одной из лучших особенностей Kdevelop является то, что он снимает множество низкоуровневых задач из рук пользователей. Kdevelop включает в себя менеджер Automake.

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

6. GDB

GDB не является инструментом для разработчиков, но этот инструмент многие разработчики считают для себя важным. GDB — это отладчик проекта GNU.

Этот инструмент запускается из командной строки и даёт разработчику мгновенный отзыв из другой программы, пока она выполняется. То есть вы создаёте и завершаете приложение только для того, чтобы узнать о том, что есть проблемы. Для того, чтобы помочь найти эти проблемы вы можете запустить вашу программу из утилиты GDB, которая поможет вам узнать, где эти проблемы. С GDB вы можете делать следующее:

  • запускать ваше приложение с указанием аргументов, переключателей или вводов, которые будут влиять на его поведение;
  • заставлять ваше приложение останавливаться на конкретном поведении;
  • проверять что произошло, когда ваше приложение остановилось;
  • добавлять изменения в вашу программу, так что вы можете тестировать прямо в полёте.

GDB также очень удобно иметь при создании отчёта об ошибках.

7. KompoZer

KompoZer — простой в использовании WYSIWYG-инструмент, направленный на нетехнических пользователей, которые хотят создать профессиональный веб-сайт без знания HTML.

KompoZer имеет ряд выдающихся особенностей. Одной из лучших особенностей является возможность открыть веб-сайт из URL, редактировать этот сайт и загрузить отредактированный сайт. Эта особенность упрощает обновление сайтов, лишая необходимости редактировать HTML. Конечно же, вам потребуется разрешение на загрузку сайта. Эта особенность также хороша для использоваия других сайтов в качестве шаблонов.

KompoZer не следует рассматривать только как инструмент для начинающих. Думайте о нём как о бесплатной открытой замене Microsoft FrontPage и Adobe Dreamweaver. И, как его более дорогостоящие альтернативы, в KompoZer можно перемещаться между WYSIWYG и редактированием кода путём кликания по табу.

8. Eclipse

Eclipse — мультиязычная интегрированная среда разработки, написанная на Java, с обширной системой плагинов, позволяющей вам расширить функциональность. Скачиваемый более миллиона раз ежемесячно, Eclipse — одно из сильнейших решений в области разработки программного обеспечения. Это, по сути, стандарт для открытой разработки.

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

9. Make

Make — это утилита Linux, которая может автоматически определить, какие части программы нужно перекомпилировать. После того, как Make работает в частях, которые должны быть перекомпилированы, он выдаёт команды, необходимые для завершения действия.

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

Этот Makefile описывает отношения между разными файлами. Если вы знакомы с установкой приложений, вы знаете строковый тип ./configure; make; make install.

10. Quanta Plus

Quanta Plus — другой инструмент HTML для разработки, похожий на KompoZer. Он способен как на WYSIWYG, так и на ручной режим и поддерживает HTML, XHTML, CSS, XML и PHP.

Особенности Quanta Plus заключаются в завершении тегов на лету, управлении проектами, быстром предварительном просмотре, отладчике PHP, поддержке CVS и Subversion. Quanta Plus, в отличие от KompoZer, направлен на более опытного пользователя, который хочет хороший редактор WYSIWYG.

А что используетет вы?

Какие советы и мнения вы можете дать, основываясь на своём опыте, по инструментам, которые мы рассмотрели? Или у вас есть любимая свободная интегрированная среда разработки, которая не включена в этот список?

Источник

Оцените статью