Semenalidery.com

IT Новости из мира ПК
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Разработка на c под linux

DeXPeriX Home Page

Разработка приложений на С# в Linux среде

C# — язык для разработки .NET приложений от Microsoft. Если название последней фирмы Вас не испугало и всё-таки нужно писать эти приложения — можно делать это в любимой ОС. В статье рассмотрен необходимый софт, а также создаётся первая программа.

Почти все знают, что .NET — платформа, разработанная компанией Microsoft, а эта корпорация ничего не делает задаром… Итак, язык C#. Хммм, странно, почему же он так напоминает Java? Ладно, проехали… Будем надеяться, что M$ заплатят за свои грехи. Но иногда даже заядлым линуксоидам приходиться программировать на этом языке. Не лезть же для этого в популярную проприетарную ОС? В этом случае нам на помощь приходит проект Mono. Вот, что про него пишут на официальном сайте:

Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix.

То есть это тот набор утилит, что нам нужен. Собранные пакеты есть почти для всех популярных дистрибутивов Linux, либо сразу входят в набор дополнительного (но не установленного) софта. Итак, скачать Mono можно со странички http://www.mono-project.com/Downloads. Если готового пакета для нужного дистрибутива нет — то можно собрать Mono из исходного кода. Правда, компилируется он довольно долго.

После установки Mono мы уже можем успешно запускать .NET-приложения. Даже те, которые были написаны в Windows и имеют расширение .ехе. Но радоваться тут нечему — приложения “летают” со скоростью эмулятора. Хотя, под Windows скорость их работы примерно такая же 🙂

Разработчики Mono обещали нам также возможность разработки приложений. Но где же она? Mono — чисто консольное приложение и предназначено для запуска .NET программ. А возможность разработки заключается в том, что в комплект входит ещё и компилятор C#. Никакой удобной IDE для разработки в пакете нет. Это не понравится девелоперам, которые уже успели попользовать проприетарную Visual Studio. Но в Linux даже из безвыходных ситуаций всегда найдётся выход! 🙂

Удобная IDE для разработки С# приложений есть! И она называется MonoDevelop. Эта среда не входит в пакет Mono, так что качать и ставить её придётся отдельно. Скачать можно с официального сайта: http://www.monodevelop.com/Download. Надеюсь, с установкой у читателя проблем не возникнет.

Теперь создадим свой первый проект на С# под Linux. Для этого нужно запустить monodevelop. По медленной скорости загрузки этого приложения можно понять, что такое интерпретируемый язык… Эта среда так долго запускается только в первый раз. Во время этой загрузки она создаёт необходимые конфигурационные файлы, подготавливает систему к работе. В последующие разы IDE будет грузиться немного быстрее.

Итак, создадим новый проект. Это можно сделать либо кликнув по ссылке “Start a New Project” в окне приветствия, либо в меню “Файл” -> “Новый проект”. По умолчанию выбран “Консольный проект”. Так как это наше первое приложение — его и выбираем. В качестве названия я ввел “hello”, название решения выставилось автоматически.

После этого появится диалог “Project Features”. Пока там можно ничего не выбирать (ну, или “Unix integration” наконец 🙂 ). Кликаем “ОК” — и код минимального приложения создан:

Допишем чуть-чуть кода, чтобы наше приложение еще и читало какие-нибудь данные из консоли и выводило ткуда что-то. Код заменим на:

После этого сохраняем файл (тандартный хоткей Ctrl+S — рабочий) и компилируем программу. Это можно сделать либо при помощи меню “Проект” -> “Простроение hello” / “Построение решения”, либо при помощи соответствующей кнопки на панели инструментов, либо ещё удобнее — по клавише F7. После этого в журнале построения должно появиться сообщение об успешной сборке.

Как видно, MonoDelvelop вполне функциональная и удобная среда. В ней уже можно с комфортом разрабатывать приложения. Порадовала относительно хорошая русская локализация — даже сообщения компилятора выводятся на русском языке. Большое количество настроек порадует любого девелопера. Также среда может помочь создать архив с новоразработанным приложением. Причём, сделать как версию с исходными кодами, так и с бинарными файлами. Отучают нас от консоли, балуют! 🙂

Ещё одной приятной фишкой среды было автодополнение функций. При введении символа “.”(точка) после объекта какого-нибудь класса во всплывающем окошке отображаются все методы и свойства этого класса, будь то встроенный или только что написанный класс. Причём, можно использовать клавиши стрелок для навигации по этому списку и по каждой функции будет отображено краткое описание (если таковое имеется). Также можно продолжать вводить имя нужной функции с клавиатуры — тогда поиск в окне-подсказке будет совершён автоматически:

В целом эта IDE оставляет приятные ощущения. И это не смотря на очень раннюю версию (0.15). Уже виднеются кроссплатформенные конкуренты Visual Studio от MS! 🙂 Но некоторые жизненно важные возможности пока не реализованы. Например, отладка. Если нужно написать небольшое приложение — то можно его написать и без отладки. Но писать серьёзные коммерческие приложения в этой среде пока будет трудновато. Остаётся лишь надеяться, что разработчики не заставят нас долго ждать и уже в ближайших версиях пошаговая отладка появится.

Теперь запустим нашу программу. Если сделать это при помощи кнопки “Запустить” (F5), то программа обругает нас, мол “Unhandled Exception: System.ArgumentNullException: Argument cannot be null…” Это происходит потому, что в поле “Возраст” мы должны были ввести число, а программа автоматически подставила значение null.

Чтоб ощутить, что мы написали реально рабочее приложение запустим его вручную. Для этого нужно перейти в каталог проекта. Потом в нем в каталог ./bin/Debug/. И в этом каталоге уже будет лежать наше готовое кроссплатформенное приложение. Можем запустить его при помощи mono и посмотреть результат:

Как видите, приложение работает 🙂 Теперь вернёмся к исходному коду. В нём показаны почти все основные принципы ООП:

  • Инкапсуляция (скрытие полей объекта от других классов) — напрямую обращаться к свойствам объекта Me нельзя, компилятор выдаст ошибку. Для обращений к этим полям нужно использовать специальные доступные функции (API — Application Prorgramm Interface). Конкретно в данном примере это функции AddToUniversity и Write.
  • Полиморфизм (возможность использования одинаковых имён). А именно, в функцию AddToUniversity передаются переменные, соответствующие классовым; вывод данных — функция Write.
  • Наследование (в примере использовано не было). В остальном исходный код должен быть понятен, так как приложеньице совсем маленькое. Однако даже маленькоее приложение может быть революционным шагом в истории! Ведь теперь для разработки приложений даже на C# вовсе не обязательно использовать Windows…

При написании данного материала были использованы:

  • ОС : Gentoo Linux 2007.0
  • Браузер : Mozilla Firefox 2.0.0.6
  • Файловый менеджер : Midnight Commander 4.6.1 с набором патчей
  • Эмулятор терминала : Konsole 1.6.6 (просвечивается картинка на рабочем столе)
  • Текстовый редактор : GVim 7.1 (он же использовался для подсвечивания синтаксиса C# в материале)
  • Графический редактор : Gimp 2.4.0
  • Оконный менеджер : KDE 3.5.7
  • Mono 1.2.4
  • MonoDevelop 0.15

Other Linux

2007-09-04 RUSSIAN
russian tools console linux c#

Интегрированные среды разработки

О.И.Цилюрик

Настоящая статья является дополнением к книге «Инструменты Linux для Windows-программистов». Все примеры к тексту вы можете скачать в виде общего архива.

Интегрированные средства (среды) разработки (IDE) не являются критически необходимым компонентом программной разработки. В традициях UNIX вполне достаточным для ведения программной разработки считается использование текстового редактора, обладающего дополнительными развитыми свойствами, такими как цветовая разметка текста, функции контекстного поиска и замены. Удовлетворяющих таким требованиям редакторов в Linux великое множество, начиная с традиционных vim и Emacs , и до простого редактирования в mc по F4. Опыт использования показывает, что этих средств вполне достаточно вплоть до средних размеров проектов.

Но использование IDE часто позволяет более производительно вести отработку программного кода, оперативнее выполнять в связке цикл: редактирование кода — сборка проекта — отладка. Значительно возрастает роль IDE в разработке GUI приложений, потому как большинство IDE предполагают в своём составе визуальные построители графических экранов.

Под Linux доступно весьма много разных IDE, различной степени интегрированности. Их уже настолько много, что становится бессмысленным описывать все, или значительную их часть в деталях: использование тех или иных IDE становится, в значительной мере, вопросом субъективных предпочтений и привычек. Можно перечислить только несколько из 1 , числа наиболее широко используемых IDE (и показан их внешний вид, чтобы их «различать в лицо»):

    Kdevelop ( http://kdevelop.org/ ) — среда разработки проекта KDE, активно развивается с 1998 г. Kdevelop помимо проектов на языке C, позволяет вести проекты практически на всех используемых в Linux языках: C++, Perl, Python, PHP, Java, Fuby, Ada, Bash, Pascal, Fortran. Эта среда позволяет интегрировать (технология KParts) различные текстовые редакторы, но основным редактором является Kate.

Kdevelop плотно интегрирован с Linux (в отличие от большинства других IDE он не является много-платформенным). Среда умеет генерировать начальные скелеты приложений. Отличительной особенностью Kdevelop (большим плюсом в некоторых случаях) является то, что среди таких шаблонов есть и проект модуля ядра (драйвера) Linux:

Шаблоны проектов Kdevelop (архив Kdevelop.tgz) достаточно громоздкие. Но это свойственно всем IDE. Вот как выглядит простейший проект, построенный для Cmake , после очистки от построенных исполнимых файлов:

    Eclipse IDE (Eclipse Integrated Development Environment, http://www.eclipse.org/ ) — одна из наиболее известных на сегодня сред, активно развивается с 2000г., сначала как проприетарный проект IBM, который затем был превращён в открытый проект. Отличительной особенностью является возможность динамических расширений (которые может подготовить и рядовой пользователь), за счёт этого наработаны плагины для поддержки десятков языков программирования, среди которых: Java, C/C++, PHP, Python и многих других, число которых постоянно прирастает из-за лёгкости работы с плагинами.

Эта среда разработки представлена практически для всех операционных систем, за счёт того, что сама она полностью выполнена на Java. Но Eclipse IDE является мульти-платформенной средой не только в смысле множества операционных систем, где она может выполняться, но и множества аппаратных платформ, отличных от x86, для которых может вестись кросс-разработка: ARM, MIPS, PPS . и даже микроконтроллеры, например, AVR. Помимо средств разработки, в Eclipse IDE включаются в виде плагинов программные эмуляторы других аппаратных платформ (например, Android ARM) для целей отладки. На основе Eclipse IDE сторонними разработчиками создано много других IDE, специализированных под конкретные применения, и это создаёт сложности в выборе конкретной модификации IDE.

Читать еще:  Как оптимизировать блюстакс 4

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

На рисунке показан возможный вид в Eclipse IDE минимального проекта, отрабатываемого под архитектуру ARM7:

factorial: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped

    Oracle Solaris Studio ( http://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html — бывший проект Sun Solaris Studio), один из старейших проектов, изначально ориентирован на операционную систему Solaris, но там же есть альтернативная реализация для Linux. Компилятор в составе Solaris Studio ( сс ) обладает особыми оптимизирующими свойствами и нередко генерирует более эффективный и быстродействующий код, чем gcc . Но среда может быть настроена и на использование компилятора gcc . Ориентирован на языки программирования: C, C++ и Fortran, с дополнительными плагинами от сторонних производителей (устанавливаются непосредственно из Solaris Studio): Java, PHP, Python, Ruby, Ada (но это может потребовать дополнительной установки Oracle JDK).


Solaris Studio основан на NetBeans IDE, выполнен на Java (как и большинство средств OS Solaris). Имеет очень богатые настройки (архив SolarisStudio.tgz ), в том числе и в части используемых компиляторов:

Solaris Studio не представлен в репозитариях дистрибутивов Linux, и должен устанавливаться из инсталляционных файлов с сайта Oracle (указан выше). Установка бинарная .

IntelliJ IDEA ( http://www.jetbrains.com/idea/ ), проект, активно развиваемый с 2000 г., ориентированный на язык Java, но имеющий развитые инструменты разработки и отладки под Android (имеет эффективный эмулятор Android, основанный на виртуальной машине QEMU). Развиваются две реализации IDE: свободная (общедоступная) и профессиональная (проприетарная).

Вот как выглядит в IntelliJ IDEA проект для Android (архив IDEA.tgz ) и эмулятор Android в котором это приложение отлаживается:

При запуске IDEA из терминала вы можете увидеть предупреждение:

OpenJDK Runtime Environment (IcedTea6 1.8.3) (fedora-43.1.8.3.fc12-i386)

OpenJDK Server VM (build 14.0-b16, mixed mode)

WARNING: You are launching IDE using OpenJDK Java runtime

NOTE: If you have both Sun JDK and OpenJDK installed

please validate either IDEA_JDK or JDK_HOME environment variable points to valid Sun JDK installation

  1. Но это предупреждение, в равной мере, относится ко всем IDE, реализованным на Java (а все наиболее развитые IDE реализованы именно на Java: Eclipse IDE, Solaris Studio, . ) — все они предпочитают (работают эффективнее) использование оригинального Sun JDK , а не OpenJDK. Sun JDK можно свободно загрузить с сайта Oracle и установить в своей системе (пожалуй, это следует сделать, если вы планируете активно использовать IDE построенные на Java).
  2. Code::Blocks IDE ( http://www.codeblocks.org/ ) — свободная много-платформенная среда разработки, сама система написана на С++, с использованием переносимой графической библиотеки wxWidgets ( http://www.wxwidgets.org/ ). Поддерживает языки программирования С и С++, но для разнообразных операционных систем (Windows, Linux, Mac OS X), среду можно собрать практически под любую UNIX систему, например FreeBSD. Обеспечивает кросс-разработку под ряд используемых процессорных платформ (ARM, AVR). Среда создаёт шаблоны приложений и поддерживает разработку для многих графических платформ (GTK+, Qt, wxWidgets, GLUT и другие), поэтому может оказаться особенно удобной для проектирования GUI приложений.

Эта среда предполагает использование (на выбор) различных компиляторов С/С++ из числа установленных в системе:

Кроме того, Code::Blocks предлагает очень расширенный набор шаблонов для создаваемых приложений (различные платформы, различные графические библиотеки):

Проекты, созданные Code::Blocks, очень компактны, что приятно отличает её от многих других IDE (здесь показан объём вместе с собранным бинарным приложением):

Geany ( http://www.geany.org/ ) — популярная среди многих разработчиков, простая в обращении, много-платформенная среда разработки. По существу, Geany не является IDE, а есть развитый инструмент редактирования кодов с цветовой разметкой, встроенным вызовом gcc, make, . Благодаря такой специфике Geany используется для при разработке программ более чем на 40 языках программирования, среди которых: C/C++, Java, JavaScript, Tcl, PHP, Python, XML/HTML и другие.

Geany работает не с какими-либо специфическими проектами, а с файлами программного кода, собираемыми традиционным make . На рисунке показан вид в Geany обсуждавшегося ранее приложения создания библиотек, ниже виден запущенный в окне терминала Geany менеджер mc (отсутствие специфических для IDE «наворотов» и определяет гибкость и универсализм Geany):

Glade ( http://glade.gnome.org/ ) — Glade не является IDE в том смысле, как описанные ранее. Это свободная система визуального создания графических интерфейсов (GUI), которая может создавать шаблон практически под любую графическую библиотеку (сам Glade написан на основе GTK+). Создадим шаблон приложения (архив Glade.tgz ):


Дальше нам остаётся написать сценарий сборки (Makefile) для сгенерированного шаблона приложения, в случае использования wxWidgets это будет что-то типа:

CCOPT = `wx-config —cxxflags`

LDOPT = `wx-config —libs`

1 Не по принципу «эти лучше других», а только потому, что эти попросту «под руку попали».

Программирование под 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. Библиотеки

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

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

  • Статические — они связываются с программой на этапе компиляции, они связываются и после этого все функции библиотеки доступны в программе как родные. Такие библиотеки имеют расширение .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.run»);
printf(«Корень: %fn», 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. Этот файл состоит из целей и имеет такой синтаксис:

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

В качестве зависимости цели может быть файл или другая цель, основная цель — 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:

Нет похожих записей

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

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.

13 комментариев

Какой бред понаписан.

Статья служит хорошим введением в программирование. Где тут бред?

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

Пример простой программы здесь есть.
Для освоения UI — это уже следующий этап и новая статья. Туда же можно запихнуть и редакторы.
А так, по-моему, все хорошо написано.

Хороший старт для тех кто пишет под windows на C# и хочет «больше экстрима в повседневной жизни». Тут вам не кнопочки мышкой кликать.

Спасибо за понятное введение в тему.
Я только не понял где используется опция «l» компилятора?

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

Си это основной язык программирования, ведь все современные языки написаны на нём. Переменная в python это всего лишь структура на си. Если знаешь си, освоить любой другой не составит проблем.
Си даёт полную свободу программисту соблюдай основные правила и делай что хочешь. А если использовать указатели , typedef и директивы препроцессора, то можешь пользоваться любым синтаксисом какой тебе в голову придёт. Единственный недостаток gui только GTK.

Интегрированные среды разработки

О.И.Цилюрик

Настоящая статья является дополнением к книге «Инструменты Linux для Windows-программистов». Все примеры к тексту вы можете скачать в виде общего архива.

Интегрированные средства (среды) разработки (IDE) не являются критически необходимым компонентом программной разработки. В традициях UNIX вполне достаточным для ведения программной разработки считается использование текстового редактора, обладающего дополнительными развитыми свойствами, такими как цветовая разметка текста, функции контекстного поиска и замены. Удовлетворяющих таким требованиям редакторов в Linux великое множество, начиная с традиционных vim и Emacs , и до простого редактирования в mc по F4. Опыт использования показывает, что этих средств вполне достаточно вплоть до средних размеров проектов.

Но использование IDE часто позволяет более производительно вести отработку программного кода, оперативнее выполнять в связке цикл: редактирование кода — сборка проекта — отладка. Значительно возрастает роль IDE в разработке GUI приложений, потому как большинство IDE предполагают в своём составе визуальные построители графических экранов.

Под Linux доступно весьма много разных IDE, различной степени интегрированности. Их уже настолько много, что становится бессмысленным описывать все, или значительную их часть в деталях: использование тех или иных IDE становится, в значительной мере, вопросом субъективных предпочтений и привычек. Можно перечислить только несколько из 1 , числа наиболее широко используемых IDE (и показан их внешний вид, чтобы их «различать в лицо»):

    Kdevelop ( http://kdevelop.org/ ) — среда разработки проекта KDE, активно развивается с 1998 г. Kdevelop помимо проектов на языке C, позволяет вести проекты практически на всех используемых в Linux языках: C++, Perl, Python, PHP, Java, Fuby, Ada, Bash, Pascal, Fortran. Эта среда позволяет интегрировать (технология KParts) различные текстовые редакторы, но основным редактором является Kate.

Kdevelop плотно интегрирован с Linux (в отличие от большинства других IDE он не является много-платформенным). Среда умеет генерировать начальные скелеты приложений. Отличительной особенностью Kdevelop (большим плюсом в некоторых случаях) является то, что среди таких шаблонов есть и проект модуля ядра (драйвера) Linux:

Шаблоны проектов Kdevelop (архив Kdevelop.tgz) достаточно громоздкие. Но это свойственно всем IDE. Вот как выглядит простейший проект, построенный для Cmake , после очистки от построенных исполнимых файлов:

    Eclipse IDE (Eclipse Integrated Development Environment, http://www.eclipse.org/ ) — одна из наиболее известных на сегодня сред, активно развивается с 2000г., сначала как проприетарный проект IBM, который затем был превращён в открытый проект. Отличительной особенностью является возможность динамических расширений (которые может подготовить и рядовой пользователь), за счёт этого наработаны плагины для поддержки десятков языков программирования, среди которых: Java, C/C++, PHP, Python и многих других, число которых постоянно прирастает из-за лёгкости работы с плагинами.

Эта среда разработки представлена практически для всех операционных систем, за счёт того, что сама она полностью выполнена на Java. Но Eclipse IDE является мульти-платформенной средой не только в смысле множества операционных систем, где она может выполняться, но и множества аппаратных платформ, отличных от x86, для которых может вестись кросс-разработка: ARM, MIPS, PPS . и даже микроконтроллеры, например, AVR. Помимо средств разработки, в Eclipse IDE включаются в виде плагинов программные эмуляторы других аппаратных платформ (например, Android ARM) для целей отладки. На основе Eclipse IDE сторонними разработчиками создано много других IDE, специализированных под конкретные применения, и это создаёт сложности в выборе конкретной модификации IDE.

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

На рисунке показан возможный вид в Eclipse IDE минимального проекта, отрабатываемого под архитектуру ARM7:

factorial: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped

    Oracle Solaris Studio ( http://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html — бывший проект Sun Solaris Studio), один из старейших проектов, изначально ориентирован на операционную систему Solaris, но там же есть альтернативная реализация для Linux. Компилятор в составе Solaris Studio ( сс ) обладает особыми оптимизирующими свойствами и нередко генерирует более эффективный и быстродействующий код, чем gcc . Но среда может быть настроена и на использование компилятора gcc . Ориентирован на языки программирования: C, C++ и Fortran, с дополнительными плагинами от сторонних производителей (устанавливаются непосредственно из Solaris Studio): Java, PHP, Python, Ruby, Ada (но это может потребовать дополнительной установки Oracle JDK).


Solaris Studio основан на NetBeans IDE, выполнен на Java (как и большинство средств OS Solaris). Имеет очень богатые настройки (архив SolarisStudio.tgz ), в том числе и в части используемых компиляторов:

Solaris Studio не представлен в репозитариях дистрибутивов Linux, и должен устанавливаться из инсталляционных файлов с сайта Oracle (указан выше). Установка бинарная .

IntelliJ IDEA ( http://www.jetbrains.com/idea/ ), проект, активно развиваемый с 2000 г., ориентированный на язык Java, но имеющий развитые инструменты разработки и отладки под Android (имеет эффективный эмулятор Android, основанный на виртуальной машине QEMU). Развиваются две реализации IDE: свободная (общедоступная) и профессиональная (проприетарная).

Вот как выглядит в IntelliJ IDEA проект для Android (архив IDEA.tgz ) и эмулятор Android в котором это приложение отлаживается:

При запуске IDEA из терминала вы можете увидеть предупреждение:

OpenJDK Runtime Environment (IcedTea6 1.8.3) (fedora-43.1.8.3.fc12-i386)

OpenJDK Server VM (build 14.0-b16, mixed mode)

WARNING: You are launching IDE using OpenJDK Java runtime

NOTE: If you have both Sun JDK and OpenJDK installed

please validate either IDEA_JDK or JDK_HOME environment variable points to valid Sun JDK installation

  1. Но это предупреждение, в равной мере, относится ко всем IDE, реализованным на Java (а все наиболее развитые IDE реализованы именно на Java: Eclipse IDE, Solaris Studio, . ) — все они предпочитают (работают эффективнее) использование оригинального Sun JDK , а не OpenJDK. Sun JDK можно свободно загрузить с сайта Oracle и установить в своей системе (пожалуй, это следует сделать, если вы планируете активно использовать IDE построенные на Java).
  2. Code::Blocks IDE ( http://www.codeblocks.org/ ) — свободная много-платформенная среда разработки, сама система написана на С++, с использованием переносимой графической библиотеки wxWidgets ( http://www.wxwidgets.org/ ). Поддерживает языки программирования С и С++, но для разнообразных операционных систем (Windows, Linux, Mac OS X), среду можно собрать практически под любую UNIX систему, например FreeBSD. Обеспечивает кросс-разработку под ряд используемых процессорных платформ (ARM, AVR). Среда создаёт шаблоны приложений и поддерживает разработку для многих графических платформ (GTK+, Qt, wxWidgets, GLUT и другие), поэтому может оказаться особенно удобной для проектирования GUI приложений.

Эта среда предполагает использование (на выбор) различных компиляторов С/С++ из числа установленных в системе:

Кроме того, Code::Blocks предлагает очень расширенный набор шаблонов для создаваемых приложений (различные платформы, различные графические библиотеки):

Проекты, созданные Code::Blocks, очень компактны, что приятно отличает её от многих других IDE (здесь показан объём вместе с собранным бинарным приложением):

Geany ( http://www.geany.org/ ) — популярная среди многих разработчиков, простая в обращении, много-платформенная среда разработки. По существу, Geany не является IDE, а есть развитый инструмент редактирования кодов с цветовой разметкой, встроенным вызовом gcc, make, . Благодаря такой специфике Geany используется для при разработке программ более чем на 40 языках программирования, среди которых: C/C++, Java, JavaScript, Tcl, PHP, Python, XML/HTML и другие.

Geany работает не с какими-либо специфическими проектами, а с файлами программного кода, собираемыми традиционным make . На рисунке показан вид в Geany обсуждавшегося ранее приложения создания библиотек, ниже виден запущенный в окне терминала Geany менеджер mc (отсутствие специфических для IDE «наворотов» и определяет гибкость и универсализм Geany):

Glade ( http://glade.gnome.org/ ) — Glade не является IDE в том смысле, как описанные ранее. Это свободная система визуального создания графических интерфейсов (GUI), которая может создавать шаблон практически под любую графическую библиотеку (сам Glade написан на основе GTK+). Создадим шаблон приложения (архив Glade.tgz ):


Дальше нам остаётся написать сценарий сборки (Makefile) для сгенерированного шаблона приложения, в случае использования wxWidgets это будет что-то типа:

CCOPT = `wx-config —cxxflags`

LDOPT = `wx-config —libs`

1 Не по принципу «эти лучше других», а только потому, что эти попросту «под руку попали».

10 лучших сред разработки (IDE) для Linux

Программирование (а точнее кодинг) — это, по сути, постоянный набор текста, поэтому очень важно найти хороший редактор, обеспечивающий комфортные условия для написания кода. Многие начинают с простых текстовых, но потом переходят на IDE (интегрированная среда разработки), поскольку IDE делает создание кода более удобным и быстрым с помощью автоматического дополнения, всплывающих подсказок, информации о возможных ошибках и средств отладки. Сегодня рассмотрим топ-10 сред разработки для Linux.

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

Хотя, если говорить о программировании в целом, то не особо важно какой ОС вы пользуетесь — многие из представленных ниже сред разработки под Linux отлично подходят и для Win/Mac. Сейчас даже можно найти разные компиляторы в сети, например запустить то же python онлайн для решения каких-то задач. Хотя локально работать все же быстрее и удобнее.

Выбор того или иного варианта зависит от ваших предпочтений. В списке находятся не все доступные программные продукты и он не является каким-то рейтингом — воспринимайте статью как перечень одних из лучших IDE для Linux, с которыми следует ознакомиться в первую очередь.

1. Eclipse

Бесплатный редактор с открытым кодом, созданный для тяжелой разработки на Java. Может работать с языками программирования: Ruby, Java, C, Perl, Python, PHP, C++ и другие.

  • Поддержка большого количества языков программирования.
  • Много плагинов для расширения возможностей.
  • Инструменты для Java EE проектов.
  • Инструменты для разработки на Java.
  • Среда разработки плагинов.
  • Интеграция с Junit.
  • Поддержка системы Git.

2. Bluefish

Это бесплатный и открытый проект, который ориентирован как на Web-разработчиков, так и на обычных программистов. Может работать с: ASP .NET, HTML5, C++, C, CSS, JS, Pearl, Ruby, Java, PHP, SQL, XML.

  • Быстрый и чистый.
  • Легкий.
  • Поддерживает многопоточность.
  • Неограниченное выполнение команд отменить/повторить.
  • Много разнообразных инструментов.
  • Авто-восстановление после крашей.
  • Мощный инструмент поиска и замены.

3. NetBeans

Бесплатная и открытая IDE от Sun Microsystems. Поддерживает такие ЯП как: Java, Python, C++, C, Ruby, PHP, JavaScript.

  • Удобный интерфейс.
  • Кросс-платформенная.
  • Динамические и статические библиотеки.
  • Мульти-сессионный интегрированный отладчик GNU.
  • Рефакторинг в редакторе, Обработчик классов и навигатор.
  • Поддержка инструментов Qt.
  • Универсальные команды Run и Debug.

4. Zend Studio

PHP программисты используют Zend для быстрого написания кода, легкого решения проблем и свободного интегрирования в облако. Zend Studio, PHP Unit и Composer образуют одно целое и становятся мощным инструментом для мобильных и PHP разработчиков.

Работает с такими языками как: HTML, PHP, JavaScript.:

  • Поддержка большинства баз данных.
  • Обнаружение ошибок в реальном времени.
  • Рефакторинг кода.
  • Параметры управления исходным кодом.
  • Локальная и серверная отладка.

5. Komodo IDE

Эта IDE под Linux, созданная в Mozilla, заслужила множество наград. Поддерживает языки программирования: Python, PHP, HTML, Perl, RHTML, C, CSS, C++, JS, Ruby, Django. Основные фишки:

  • Кросс-платформенная.
  • Профилирование кода для PHP и Python.
  • Графическая отладка.
  • Расширенные функции редактирования с многооконным и разделенным видом.
  • Множество дополнений.
  • Много настроек для кастомизации.
  • Отладка и развертывание в Stackato PaaS.

Цена: обычная и образовательная лицензии — бесплатны, а персональная и предпринимательская версии — по 89 и 295 долларов соответственно.

6. Anjuta

Универсальная IDE, которая включает в себя ряд расширенных возможностей, таких как мастер приложений, редактор исходного кода, управление проектами и версиями, профилировщик, отладчик, дизайнер графического интерфейса и другие инструменты. Anjuta предоставляет простой графический интерфейс и достаточные мощности для систематической разработки. Поддержка языков: C и C++.

  • Простой пользовательский интерфейс.
  • Мастер проектов и готовые шаблоны.
  • Интегрированный Glade.
  • Интегрированный DevHelp.

7. MonoDevelop

Эта IDE создана для C#, но также поддерживает другие языки и позволяет разработчикам быстро писать десктопные и ASP.NET Web приложения для Linux. Это кросс-платформенный продукт, который делает простым процесс извлечения .NET приложений, созданных в Visual Studio, в Linux без потери исходного кода.

Может работать с языками: VB, C, C++, Python, C#, Java.

  • Изменяемое рабочее пространство, которое соответствует виду вашего рабочего процесса.
  • Встроенный отладчик.
  • Визуальный дизайнер.
  • Развертывание и тестирование.
  • Объектно-ориентированный API.
  • Инструменты для увеличения возможностей.

8. CodeLite

Бесплатный проект с открытым исходным кодом для разработки на C++ и C под разные платформы. Полезные фишки:

  • Встроенная поддержка GDB, GCC, clang, VC++.
  • Плагины GIT.
  • Подсветка синтаксиса для различных языков.
  • 2 механизма, завершающих код, которые работают одновременно.
  • Просмотр локальных потоков процессора, просмотр дерева и памяти.

9. Kdevelop

Полноценная и расширяемая IDE для C, C++, PHP и Ruby. Основные преимущества:

  • Кросс-платформенная.
  • Используется для KDE/QT разработки.

10. Geany

Хотя Geany имеет базовые возможности IDE, он является текстовым редактором, который работает на GTK2 библиотеке. Он был спроектирован так, чтобы стать маленькой и быстрой IDE. Поддерживаемые языки: HTML, PHP, Java, C, Perl, Pascal, Python.

  • Автоматическое закрытие тегов XML и HTML.
  • Развитая система навигации по коду.
  • Работает на нескольких платформах.
  • Позволяет создавать пользовательские плагины.
  • Свертывание кода и подсветка синтаксиса.
  • Простое управление проектом.

Как уже сказал выше, были рассмотрены далеко не все среды разработки для Linux, есть и другие хорошие решения: IDE от JetBrains, Code::Blocks и Qt Creator. Расскажите в комментариях ниже о тех приложениях, что вы используете у себя.

Ссылка на основную публикацию
Adblock
detector