Перейти к содержимому

Как запустить скомпилированный файл linux

  • автор:

LibreBay

Статьи про ОС Ubuntu. Языки программирования Си и C++.
Инструменты разработки и многое другое.

понедельник, 5 декабря 2016 г.

Как скомпилировать программу на C/C++ в Ubuntu

ubuntu terminal

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

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

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

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

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

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

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

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

#include int main(int argc, char **argv)

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

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

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

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

sudo apt install build-essential

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

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

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

cd ~/Рабочий\ стол

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

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

Работа в терминале
Рис. 3. Работа в терминале.

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

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

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

./hello

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

Работа в терминале, продолжение
Рис. 4. Работа в терминале, продолжение.

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

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

#include int main(int argc, char **argv)

Сохраняем текст программы в файл под именем hello2.cpp . Таким образом, команда компилирования будет иметь вид:

g++ -Wall -o hello2 hello2.cpp

Для запуска результата вводим в терминале:

./hello2

Заключение

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

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

Запуск скомпилированного файла в ubuntu

Всем привет , интересуюсь c++ , вот появился вопрос , скомпилировал я код, появляется у меня скомпилированный файл который надо запустить , но он в формате exe , wine у меня не установлен , можно ли сделать чтобы компилятор создал программу не в .exe формате а в том формате , который я бы смог открыть через ubuntu ? Либо сделать универсальный формат , если есть такой .

Отслеживать
9,066 14 14 серебряных знаков 26 26 бронзовых знаков
задан 11 окт 2016 в 23:40
1,395 19 19 серебряных знаков 49 49 бронзовых знаков

1 Что мешает вам скомпилировать код в gcc под Убунтой для нативной платформы? 2 Что мешает вам в Убунте установить и настроить wine?

12 окт 2016 в 1:46

Я в курсе про Wine , меня интересует можно ли задать правило компилятору , чтобы он создал бинарник не в .exe формате , а в том на который нажав мышкой 2 раза , он откроется как и с .exe на винде

12 окт 2016 в 2:01

Если вы под Убунтой в gcc компилируете exe-файл, то есть исполняемый файл для платформы win-32, если я вас правильно понял, тогда сами понимаете, что это возможно, так как gcc по умолчанию, компилирует под нативную платформу (x86_64). Только, как вам написали в ответе, не всякий код написанный под одну платформу, без учёта кросс-компиляции, возможно сходу собрать под другой.

12 окт 2016 в 2:18
g++ -o hello main.cpp , он не компилирует под ubuntu , такойже обычный .exe файл
12 окт 2016 в 11:20

я вас понял , но вопрос был в том что , как через gcc скомпилировать исполняемый файл для ubuntu так , чтобы он открылся при нажатии на него 2йным щелчком ( также как .exe в винде)

12 окт 2016 в 22:35

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Кривой путь: гуглить про кросс-компиляцию. Например, если Cygwin, то (примерно, давно такой ерундой не занимался):

  1. Качаем последнюю версию crosstool-ng
  2. Распаковываем её куда-нибудь в cygwin shell, запускаем ./configure (доустанавливаем то, на что она матерится — bison, flex, cvs, wget, исходники/библиотеку ncurses, и т.д.)
  3. make , make install , и дальше — по инструкциям отсюда.

Неожиданный путь: поставить Open Watcom для Windows (при установке не забыть поставить галочку у Linux в target platform). Создание нового проекта в нём:

введите сюда описание изображения

Может прокатить 🙂 Хотя поддержки последних стандартов от него ждать не приходится, но «Hello, world» исправно собирает 🙂

Правильный путь: поставить убунту в виртуалке и собирать в ней.

И в любом случае готовиться к тому, что исходники, без проблем собирающиеся под Windows, придётся дорабатывать напильником. После чего может возникнуть желание пойти по совсем правильному пути: работать под Linux, а Windows держать в виртуалке 🙂

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

�� Как скомпилировать и запустить программы на C, C++ в Linux

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

Если вы студент или новый пользователь Linux, пришедший с платформы Microsoft, то вам может быть интересно, как запускать программы на C или C ++ в дистрибутиве Linux.

Потому что компиляция и запуск кода на платформах Linux немного отличается от Windows. Давайте начнем, не так ли?

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

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

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

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

$ whereis gcc
$ which gcc
$ gcc -v

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

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

Во-первых, давайте посмотрим, как скомпилировать и запустить простую программу, написанную на языке Си.

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

Я собираюсь написать свою программу на C, используя редактор nano.

$ nano itisgood.c

Примечание: вам нужно использовать расширение .c для программ на C или .cpp для программ на C ++.

Скопируйте / вставьте следующий код:
#include int main()
Нажмите Ctrl + O и Ctrl + X, чтобы сохранить и выйти из файла.
Чтобы скомпилировать программу, запустите:

$ gcc itisgood.c -o itisgood
$ cc itisgood.c -o itisgood

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

Вы должны исправить их, чтобы продолжить.

Если ошибки нет, компилятор успешно сгенерирует исполняемый файл с именем itisgood в текущем рабочем каталоге.

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

$ ./itisgood

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

Welcome To itisgood.ru!

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

$ gcc source1.c source2.c -o executable

Чтобы разрешить предупреждения, отладьте символы в выводе:

$ gcc source.c -Wall -Og -o executable

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

$ gcc -S source.c

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

$ gcc -c source.c

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

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

$ gcc source.c -o executable -lm

Для более подробной информации обратитесь к справочным страницам.

$ man gcc

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

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

Вот простая программа на C ++.

$ cat itisgood.cpp

#include int main()

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

$ g++ itisgood.cpp -o itsigood

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

$ ./itisgood

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

Welcome To itisgood.ru!

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

$ make itisgood

Я не использовал расширение .cpp в приведенной выше команде для компиляции программы.

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

$ ./itisgood Welcome To itisgood.ru!

Для более подробной информации обратитесь к справочным страницам.

$ man g++

Надеюсь все было достаточно просто и понятно! ��

itisgood

previous post

�� Как исправить ошибку «repository is not valid yet»
�� Как остановить запросы с пустым или неправильным заголовком хоста
You may also like

�� Как изменить порт Angular

�� Поиск содержимого между двумя совпадающими шаблонами на.

Что означает “$

☸️ Установка легкого Openshift с помощью Microshift

�� Полезные команды Documentum

�� Как запустить службы systemd при загрузке системы

�� Как искать содержимое после совпадения с шаблоном.

Как отправить большое видео по электронной почте

�� Как переименовать контейнер LXD

Как пополнить Steam из России в 2024 году

Leave a Comment Cancel Reply

• Свежие записи

  • �� Узнаем, как долго работает контейнер Docker
  • �� Как изменить порт Angular
  • ☸️ Автоматизация приостановки Kubernetes CronJobs с помощью find и sed
  • �� Поиск содержимого между двумя совпадающими шаблонами на Linux
  • Что такое QoS?
  • Что означает “$

• Категории

• Теги

• itsecforu.ru

• Страны посетителей

IT is good

Этот пример относится к заданиям cron в Kubernetes, но его можно применить к чему угодно! В Kubernetes вы можете установить suspend: true или…

Grep, мощная утилита командной строки в системах Unix и Linux, известна для поиска и фильтрации текста с помощью регулярных выражений. В этой статье…

QoS, или Quality of Service, используется для обозначения способов, с помощью которых ваш маршрутизатор может перераспределять (или отбрасывать) определенные типы трафика в вашей…

В Makefile я часто вижу “$

1. Обзор Функция многоступенчатых сборок в Docker позволяет разработчикам создавать последовательность сборок, каждая из которых имеет свой собственный набор инструкций. Это помогает оптимизировать…

Как запустить скомпилированную программу в Linux ( Ubuntu ) без терминала?

Пытаюсь начать программировать в Linux, и сразу вопрос проблема. В Windows написал код, скомпилировал, получил на выходе ЕХЕшник. Двойной щелчок по программе, она запустилась. В Linux написал простую программу на С в блокноте ( для начала ), скомпилировал gcc prog.c -o prog, получил на выходе файл. Но Я ее могу запустить только через терминал командой ./prog .А как запускать программы по двойному щелчку мыши? А если вы еще дадите простой код с кнопкой и обработкой события по нажатию этой кнопки или любую другую полезную информацию по этой теме ( кроссплатформенность например ), Я вам искренне буду благодарен. Хочется дальше развиваться.

  • Вопрос задан более трёх лет назад
  • 2905 просмотров

2 комментария

Простой 2 комментария

Попробуй sudo chmod +x *Название файла*.
Эта команда разрешит исполнение файла.

Попробуй sudo chmod +x *Название файла*.

Из вопроса:

Я ее могу запустить только через терминал командой ./prog

Решения вопроса 1

leahch

Алексей Черемисин @leahch Куратор тега Linux
Я мастер на все руки, я козлик Элек Мэк 🙂

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

Про программы с графическим интерфейсом все просто — они сразу пытаются открыть графическое окно. Но сама программа будет немного сложнее.

Так, Вы сделали и скомпилировали консольную программу. В этом же терминале можно ее и запустить.
Либо сделать «лаунчер» типа
xterm ./prog
Как сделать «лаунчер», зависит от вашего графического окружения, но обычно можно просто сделать desktop-файл, его практически все в линуксе понимают.
Просто создайте текстовый файл prog.Desktop со следующим содержимым (Exec — полный путь до вашей программы, Icon — путь до иконки, но можно без нее)

[Desktop Entry] Encoding=UTF-8 Version=1.0 Type=Application Terminal=true Exec=/path/to/executable Name=Name of Application Icon=/path/to/icon

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://kodirovanie.vyvod-iz-zapoya-na-domu-moskva-snp.ru/