Меню Рубрики

C компилятор под linux

Компилируем и запускаем программы C, C++ в Linux

Это краткое руководство объясняет, как компилировать и запускать программы на Си/Си++ в операционной системе GNU/Linux.

Если вы студент или новый пользователь Linux, который переходит с платформы Microsoft, то вам может быть интересно, как запускать программы на Си или Си++ в дистрибутиве Linux. Мы должны понимать, что компиляция и запуск кода на платформах Linux немного отличается от Windows.

Установка необходимых инструментов

Как вы, наверное, уже понимаете, для запуска кода нужно установить необходимые инструменты и компиляторы для работы. Ниже мы опишем как установить все инструменты разработки в Linux.

Для работы и тестирования у нас должен быть сервер с Linux. Лучший вариант – это VPS. В зависимости от географии проекта обычно выбирают две страны для серверов – VPS США и VPS России.

В этом кратком руководстве мы обсудим, как установить средства разработки в такие дистрибутивы Linux, как Arch Linux, CentOS, RHEL, Fedora, Debian, Ubuntu, openSUSE и др.

Эти средства разработки включают в себя все необходимые приложения, такие как компиляторы GNU GCC C/C++, make, отладчики, man-страницы и другие, которые необходимы для компиляции и сборки нового программного обеспечения и пакетов.

Инструменты разработчика могут быть установлены как по отдельности, так и все сразу. Мы собираемся установить все сразу, чтобы нам было намного проще работать.

Установка в Arch Linux

Для установки средств разработки в Arch Linux и его дистрибутивов, таких как Antergos, Manjaro Linux, просто запустите:

Вышеуказанная команда установит следующие пакеты в ваши системы на базе Arch:

Просто нажми ENTER, чтобы установить их все.

Если вы хотите установить пакет в определенную группу пакетов, просто введите его номер и нажмите ENTER, чтобы продолжить установку.

Установка средств разработки в RHEL, CentOS

Для установки средств разработки в Fedora, RHEL и его клонах, таких как CentOS, Scientific Linux, выполните следующие команды как пользователь root:

Вышеуказанная команда установит все необходимые инструменты разработчика, например:

  1. autoconf
  2. automake
  3. bison
  4. byacc
  5. cscope
  6. ctags
  7. diffstat
  8. doxygen
  9. elfutils
  10. flex
  11. gcc/gcc-c++/gcc-gfortran
  12. git
  13. indent
  14. intltool
  15. libtool
  16. patch
  17. patchutils
  18. rcs
  19. subversion
  20. swig

Установка инструментов разработки в Debian, Ubuntu и дистрибутивы

Для установки необходимых инструментов разработчика в системах на базе DEB, запустите:

Эта команда предоставит все необходимые пакеты для настройки среды разработки в Debian, Ubuntu и его дистрибутивов.

  1. binutils
  2. cpp
  3. gcc-5-locales
  4. g++-multilib
  5. g++-5-multilib
  6. gcc-5-doc
  7. gcc-multilib
  8. autoconf
  9. automake
  10. libtool
  11. flex
  12. bison
  13. gdb
  14. gcc-doc
  15. gcc-5-multilib
  16. and many.

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

Скрипт Mangi

Если Вам не нравится метод установки средств разработки выше, есть также скрипт под названием “сценарий манги” (mangi), доступный для легкой настройки среды разработки в DEB-системах, таких как Ubuntu, Linux Mint и других производных Ubuntu.

Читайте также:  Linux epson l366 driver

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

Этот скрипт установит следующие среды разработки и инструменты на вашу систему Linux:

  1. Node.js
  2. NVM
  3. NPM
  4. Nodemon
  5. MongoDB
  6. Forever
  7. git
  8. grunt
  9. bower
  10. vim
  11. Maven
  12. Loopback
  13. curl
  14. python
  15. jre/jdk
  16. gimp
  17. zip unzip and rar tools
  18. filezilla
  19. tlp
  20. erlang
  21. xpad sticky notes
  22. cpu checker
  23. kvm acceleration
  24. Calibre Ebook Reader (I often use it to read programming books
  25. Dict – Ubuntu Dictionary Database and Client (CLI based)

Сначала установите следующее:

Скачайте скрипт манги, используя команду:

Извлеките загруженный архив:

Вышеуказанная команда распакует zip-файл в папку под названием mangi-script-master в вашей текущей рабочей директории. Перейдите в каталог и сделайте скрипт исполняемым, используя следующие команды:

Наконец, запустите скрипт с помощью команды:

Пожалуйста, имейте в виду, что этот скрипт не полностью автоматизирован. Вам необходимо ответить на ряд вопросов “Да/Нет” для установки всех инструментов разработки.

Установка инструментов разработки в openSUSE/SUSE

Для настройки среды разработки в openSUSE и SUSE enterprise выполните следующие команды от имени root пользователя:

Проверка установки

Теперь проверим, были ли установлены средства разработки или нет. Для этого запустите:

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

Настройка среды разработки

Скрипт под названием ‘mangi’ поможет вам настроить полное окружение в системах на базе Ubuntu.

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

Эти команды покажут путь установки и версию компилятора gcc.

Компиляция и запуск программ C, C++

Сначала посмотрим, как скомпилировать и запустить простую программу, написанную на языке Си.

Компиляция и запуск программ на C

Напишите свой код/программу в любимом редакторе CLI/GUI.

Я собираюсь написать свою программу на Си с помощью редактора nano.

Примечание. Вам необходимо использовать расширение .c для программ на Си или .cpp для программ на Си++.

Скопируйте/вставьте следующий код:

Нажмите Ctrl+O и Ctrl+X для сохранения и выхода из файла.

Чтобы скомпилировать программу, запустите:

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

Наконец, запустите программу с помощью команды:

Вы увидите вывод, как показано ниже:

Чтобы скомпилировать несколько исходных файлов (например, source1 и source2) в исполняемый файл, запустите:

Читайте также:  Linux сервер для офиса

Для разрешения предупреждений, необходима отладка символов на выходе:

Скомпилировать исходный код в инструкции ассемблера:

Скомпилировать исходный код без связывания:

Вышеприведенная команда создаст исполняемый файл под названием source.o.

Если ваша программа содержит математические функции:

За более подробной информацией обращайтесь к man-страницам (страницы руководства).

Компиляция и запуск программ на C++

Напишите вашу C++ программу в любом редакторе по вашему выбору и сохраните ее с расширением .cpp.

Пример простой C++ программы:

Чтобы скомпилировать эту программу на C++ в Linux, просто запустите:

Если ошибок не было, то можно запустить эту Си++ программу под Linux с помощью команды:

В качестве альтернативы мы можем скомпилировать приведенную выше программу на C++, используя команду “make“, как показано ниже.

Вы заметили? Я не использовал расширение .cpp в вышеприведенной команде для компиляции программы. Нет необходимости использовать расширение для компиляции Си++ программ с помощью команды make.

Запустите, используя команду:

За более подробной информацией обращайтесь к man-страницам.

Источник

Посоветуйте C/C++ компилятор под Linux

подскажите, где можно скачать компилятор для C++ под Linux?
. можно скачать компилятор для C++ под Linux? заранее спасибо!

Посоветуйте что-то почитать по сокетам в C++ под linux.
Посоветуйте что-то почитать по сокетам в C++ под linux.

Компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7. Посоветуйте другой компилятор
Здравствуйте! Я недавно начал заниматься С++, но мой компилятор (Visual C++ 6.0) в плохой.

Посоветуйте компилятор для написания программ под Linux знаю только CodeLite
посоветуйте компилятор для написания приграм под Linux знаю только CodeLite, может есть что лучше?

Сомнительный, а точнее, субъективный фактор удобства..

По поводу активного развития – опять же: дилемма о плюсах и минусах свободного ПО. Да, активно развивается, но поскольку система управления проектом децентрализована, следствием этого – GCC больше всего подвержен программным ошибкам(багам), по сравнению с др. (коммерч.) компиляторами. Далее: компилятор можно оценивать по нескольким критериям(не полный список):

1. Скорость компиляции.
2. Качество сгенерированного кода(этот пункт можно ещё разделить на подпункты).
3. Оптимизационные возможности(качество реализации этих возможностей).
4. Количество поддерживаемых платформ и расширений инструкций.
и т. д.

По четвёртому пункту, думаю, GCC – лидер. Однако по первому, второму и третьему – весьма спорный момент.

Я не говорю, что GCC – плохой компилятор, однако терпеть не могу, когда люди говорят такие громкие высказывания

Я вот, лично, не понял эту тему. Квартира-то официальная – GCC. Они и делают официальные релизы. А в исправлении багов участвует ВЕСЬ МИР.. Вы бы еще про главное преимущество сообщества *nix так выразились. Чета я про забажинность GCC не слыхивал. Зато с багами Борланда кажный день сталкиваюсь

Читайте также:  Kali linux книга на русском pdf

Для меня MINGW – самое то. и можно даже без MSYS его пользовать – с убогой Виндовозной консолью. А уж под линухами компилять не с GCC – изврат, по-моему.

вот именно цто комерческий

лично я под линуксом юзаю G++

По скорости работы gcc, возможно, и есть самый быстрый компилятор в мире. Но по очень банальной причине – генерит хреновый код (по сути дело мало оптимизаций)

Добавлено через 7 минут 21 секунду

Почитай changelog’и к релизам gcc – увидишь, сколько там ошибок исправляется. А у борланда каждый день ты сталкиваешься скорее с ошибками билдера и всей этой графической среды, а не с ошибками компилятора

Всё получится – вопрос только в желании. Я практически весь свой софт дополнительно прогоняю на Sun’овском компиляторе на какой-то древней версии Соляриса. Это мне позволяет сказать, что с очень высокой вероятностью мой софт будет работать на любой архитектуре и любом компиляторе. Другой вопрос, что это требует больше ресурсов при тестировании

GNU тут при том, что у них свои нестандартные расширения. Будь то в языке, будь то elf, будь то допоплнительные функции в glibc. И вопрос непереносимости тут не в замене компилятора, а в том, что на других компиляторах такой функциональности попросту нет. Не говоря уж о линкерах и прочих вещах, где все эти расширения закопаны ещё глубже

У компилятора gcc слишком тривиальное промежуточное представление RTL. Оно учитывает общие возможности всех архитектур (везде есть память, регистры, операции сложения и вычитания и т.п.). Представление довольно хорошее – на нём можно выразить какие-то нестандартные архитектурно-зависимые фичи. Например, где-то недавно упоминавшаяся возможность автоинкрементации на pdp11. ‘MOV (R1)+, (R2)+’ с точки зрения этого смого представления выразится как одновременно исполненные три операции: ‘MOV (R1), (R2); ADD R1, 1; ADD R2, 1’. Вот такую поддержку от gcc ещё можно родить. Но современные процессоры поддерживают куда более сложные операции, которые на универсальном представлении очень плохо выражаются. Типа аппаратной поддержки накрученных циклов с переименованием регистров. Прирост проиводительности на счётных задачах здесь будет огромным, но gcc этого в принципе не вытянет, т.к. для этого уже манипуляций с одним лишь промежуточным представлением будет недостаточно – надо структуру компилятора сильно менять. Это пойдёт в ущерб его многоархитектурности, а потому разработчики не пойдут на это.

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

Источник

Adblock
detector