Сборка программ из исходников в linux

GCC. Первая программа на Linux

Последнее обновление: 18.05.2017

Рассмотрим создание первой программы на Linux, в частности, в среде Ubuntu 16.04. Как правило, многие дистрибутивы Linux, в том числе и Ubuntu,
уже по умолчанию содержат установленный компилятор gcc, который мы сразу же можем использовать. Но даже если вдруг он не установлен, то его можно доустановить в терминале через команду:

sudo apt-get install gcc

В остальном, если мы будем использовать для компиляции компилятор GCC, все будет аналогично созданию программы на Windows.

Определим в файловой системе каталог для исходных файлов с кодом на Си и создадим в нем новый файл hello.c со следующим кодом:

#include <stdio.h>		// подключаем заголовочный файл stdio.h
int main(void)					// определяем функцию main
{								// начало функции
	printf("Hello World! \n");	// выводим строку на консоль
	return 0;					// выходим из функции
}								// конец функции

И это тот же код, что был в случае с Windows, потому что программы на Си на уровне исходного кода в большей степени обладают переносимостью.

Чтобы вывести строку на консоль, необходимо подключить подключает заголовочный файл stdio.h с помощью директивы include.

#include <stdio.h>

Этот заголовочный файл содержит определение функции printf, которая нужна для вывода строки на консоль.

Далее идет определение функции int main(void) — главной функции, которая должна присутствовать
в любой программе на Си. С нее собственно и начинается выполнение приложения.

Ключевое слово int в определении функции говорит о том, что функция возвращает целое число.
А слово void в скобках указывает, что функция не принимает параметров. А все содержимое функции заключается в фигурные скобки.

В самой функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello world!».

В конце осуществляем выход из функции с помощью оператора return. Так как функция должна возвращать целое число, то после return указывается число 0.
Ноль используется в качестве индикатора успешного завершения программы.

Перейдем к терминалу и вначале с помощью команды cd перейдем к каталогу, где расположен файл с исходным кодом.

Далее для компиляции программы введем команду

gcc hello.c

В итоге в папке с файлом hello.c появился скомпилированный файл, который по умолчанию называется a.out. Запустим его с помощью следующей команды:

./a.out

И на консоль будет выведена сакральная строка «Hello World!».

НазадВперед

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

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

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

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

Таким образом, для любой программы на Си нужно подключать библиотеки, и все программы используют какие-либо библиотеки

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

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

Классификация ISA

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

К другим типам относятся архитектуры с очень длинным командным словом (VLIW) и тесно связанные архитектуры с длинным командным словом (LIW) и явно параллельным вычислением команд (EPIC). Эти архитектуры стремятся использовать параллелизм на уровне команд с меньшим количеством оборудования, чем RISC и CISC, возлагая ответственность за выдачу команд и планирование на компилятор .

Были изучены архитектуры с еще меньшей сложностью, такие как компьютер с минимальным набором команд (MISC) и компьютер с одним набором команд (OISC). Это теоретически важные типы, но они не были коммерциализированы.

Шаг 1. Получение исходного кода ядра

Установив архив из репозитория, с автоматическим наложением последних официальных патчей. При этом скачается пакет размером ~150 Мб в текущую папку. Чтобы получить исходники ядра, версия которого установлена на компьютере выполните команду: apt-get source linux-image-`uname -r`

Или вместо `uname -r` можно указать конкретную версию из имеющихся в репозитории.

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

Не забудьте включить общий доступ к исходникам в репозитории (). Из консоли это сделать можно раскомментировав строки начинающиеся с deb-src в файле /etc/apt/sources.list, а затем выполнить обновление командой: «sudo apt-get update».

Самая свежая версия ядра доступна по git. Размер скачиваемого пакета ~500—800 Мб. git clone git://kernel.ubuntu.com/ubuntu/ubuntu-.git

Где — имя релиза, например:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git

Другие ядра

Также существуют ядра, работоспособность которых в Ubuntu не гарантируется. Например, известна проблема с рядом популярных системных приложений (в частности драйвера NVidia, VirtualBox), которые при своей установке компилируются под установленное ядро. Поэтому для их установки на ядро, нестандартное для данной версии Ubuntu (например, Ubuntu 16.04 идёт с ядром 4.4.0), может потребоваться их отдельная компиляция вручную или специальные патчи, а последние версии ядер с kernel.org приложение может вообще не поддерживать.

  • Архив с базовой версий без патчей, т.е. например «4.8.0», «4.8.10»:
    sudo apt-get install linux-source

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

cd ~/
tar -xjf linux-2.6.x.y.tar.bz2

Или в случае с linux-source:

cd /usr/src
tar -xjf linux-source-2.6.x.y.tar.bz2

Бенчмарк

Так как одной из целей является ускорение, необходимо оценить, насколько быстро работает скомпилированный код. В качестве бенчмарка будем использовать pyperfomance. К сожалению, pyperfomance не подошел для Cython и Pythran, потому что не позволяет визуализировать все возможности языка. Ускорения для Cython без модификации кода получить не удалось, а Pythran не умеет в пользовательские классы. Для них воспользуемся вычислением числа пи:

Эксперименты будем проводить на процессоре Intel Core i7 10510U. На CPython 3.9.7 время вычисления числа пи до 100.000.000 знака заняло 5.82 секунды.

Процесс установки Linux — пошаговая инструкция

Шаг 1 — Приветствие . После запуска образа Ubuntu Вы увидите вкладку приветствия «Добро пожаловать». Здесь следует выбрать язык «Русский» и нажать на кнопку установить Ubuntu.

Обратите внимание на первую ссылку «Запустить Ubuntu». Она позволит Вам загрузиться с диска без установки (LiveCD)

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

Шаг 2 — Автоматическая загразку обновлений . Вторым шагом Ubuntu спросит разрешение на автоматическую установку и обновление всех драйверов. Для этого потребуется доступ к интернету.

Думаю, что логично было бы разрешить это сделать, чтобы Ваши драйвера имели самую актуальную версию после установки линукса.

Шаг 3 — Выбор типа установки . На этом шаге нужно выбрать место куда устанавливать Ubuntu, а также разбиение диска. Поскольку в нашем примере мы ставим Linux на VirtualBox, то мы можем выбрать первый пункт «Стереть диск и установить Ubuntu»:

Если Вы устанавливаете Ubuntu совместно с другой системой, то необходимо выбрать «другой вариант» и самостоятельно разбить диск. Для этого потребуется указать основной раздел, домашнюю папку, размер диска, размер файла подкачки и выбрать типы файловых систем (ext4 основной и swap для файла подкачки).

Шаг 4 — Раскладка клавиатуры . Выберите «Английская (США)» по умолчанию, чтобы в дальнейшем не иметь проблем с раскладкой. После установки можно будет добавить русскую раскладку.

Шаг 5 — Задание имени . Требуется указать имя пользователя и пароль. Это имя будет использоваться в качестве имени для домашней директории Linux. Также я выбрал пункт «входить в систему автоматически»:

Шаг 6 — Установка . Дальше наступает процесс установки. Теперь нужно просто подождать окончания.

По завершению, установщик скажет, что нужно перезагрузить компьютер:

После чего нужно будет нажать Enter:

После перезагрузки Ubuntu запустится. Вы увидите следующую картинку:

Собственно на этом установка Ubuntu завершена. Теперь можно начинать пользоваться.

Рекомендую сделать «снимок» в VirtualBox новой системы, чтобы всегда иметь возможно откатиться к ее исходному состоянию.

Шаг 3 — Компиляция нескольких файлов

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

  • Файл, становясь большим, увеличивает время компиляции, и малейшие изменения в исходном тексте автоматически вынуждают тратить время программиста на перекомпиляцию программы.
  • Если над программой работает много человек, то практически невозможно отследить сделанные изменения.
  • Процесс правки и само ориентирование при большом исходном тексте становится сложным и поиск небольшой ошибки может повлечь за собой вынужденное «изучение» кода заново.

Это далеко не все пробемы, которые могут возникнуть при наличии программы «монстра». Поэтому при разработке программ рекомендуется их разбивать на куски, которые функционально ограничены и закончены. В этом значительно помогает сам язык C++, предоставляя свой богатый синтаксис.

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

#include <stdio.h>

// описываем функцию f1() как внешнюю
extern int f1();

// описываем функцию f2() как внешнюю
extern int f2();

int main()
{
	int n1, n2;

	n1 = f1();
	n2 = f2();

	printf("f1() = %d\n",n1);
	printf("f2() = %d\n",n2);

	return 0;
}

Теперь создаем два файла, каждый из которых будет содержать полное определение внешней функции из главной программы. Файлы назовем f1.c и f2.c:

// файл f1.c
int f1()
{
	return 2;
}

// файл f2.c
int f2()
{
	return 10;
}

После этого процесс компиляции программы с помощью gcc будет выглядеть несколько иначе от описанного в «Шаг 1 — Компиляция программ на языке C/C++».

Компилировать можно все файлы одновременно одной командой, перечисляя составные файлы через пробел после ключа -c:

gcc -c main.c f1.c f2.c

Или каждый файл в отдельности:

gcc -c f1.c
gcc -c f2.c
gcc -c main.c

В результате работы компилятора мы получим три отдельных объектных файла:

main.o
f1.o
f2.o

Чтобы их собрать в один файл с помощью gcc надо использовать ключ -o, при этом линкер соберет все файлы в один:

gcc main.o f1.o f2.o -o rezult

В результате вызова полученной программы rezult командой:

./rezult

На экране появится результат работы:

dron:~# ./rezult
f1() = 2
f2() = 10
dron:~#

Теперь, если мы изменим какую-то из процедур, например f1():

int f1()
{
	return 25;
}

То компилировать заново все файлы не придется, а понадобится лишь скомпилировать измененный файл и собрать результирующий файл из кусков:

dron:~# gcc -c f1.c
dron:~# gcc main.o f1.o f2.o -o rezult2
dron:~# ./rezult2
f1() = 25
f2() = 10
dron:~#

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


Предыдущий Шаг | Следующий Шаг | ОглавлениеАвтор .

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

Как вы, наверное, уже понимаете, для запуска кода нужно установить необходимые инструменты и компиляторы для работы. Ниже мы опишем как установить все инструменты разработки в 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:

  1. autoconf
  2. automake
  3. binutils
  4. bison
  5. fakeroot
  6. file
  7. findutils
  8. flex
  9. gawk
  10. gcc
  11. gettext
  12. grep
  13. groff
  14. gzip
  15. libtool
  16. m4
  17. make
  18. pacman
  19. patch
  20. pkg-config
  21. sed
  22. sudo
  23. texinfo
  24. util-linux
  25. which

Просто нажми 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.

После свежей установки 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 пользователя:

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

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

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

Ключи и параметры, общие для разных режимов

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

Имя-файла-пакета.rpm для режимов -i и -U — это полное (с директорией)
имя файла. Например, ~/RPMS/apache-1.3.3-1.i386.rpm. В принципе, rpm понимает имена файлов в виде ftp-URL, т.е.
ftp://сервер/директория/файл.rpm, но ими имеет смысл пользоваться
только в быстрой и надежной сети (в нашей стране — в локальной). Впрочем, в
локальной сети (и любой быстрой) удобнее пользоваться NFS-сервером, если он
есть.

Пакет — это имя уже установленного пакета для режимов -e, -q и -y.
Оно может указываться как с номером версии, так и без него. Примеры:
acroread-3.01-4, acroread. Если вместо списка пакетов указать
ключ «-a» (all), то это будет означать «все пакеты». Кроме того,
ключ «-f» позволяет вместо имени пакета указать какой-либо файл,
принадлежащий этому пакету (см. ниже).

Шаг 4. Конфигурация будущей сборки ядра

Перейдите в папку, куда вы распаковали ядро, выполнив команду

cd ~/linux-2.6.x.y

где 2.6.x.y — версия загруженного вами ядра.

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

  • config — традиционный способ конфигурирования. Программа выводит параметры конфигурации по одному, предлагая вам установить для каждого из них свое значение. Вызывается командой
    make config
  • oldconfig — файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих. Вызывается командой

    make oldconfig
  • defconfig — файл конфигурации создаётся автоматически, основываясь на значениях по-умолчанию для данной конкретной архитектуры. Вызывается командой

    make defconfig
  • menuconfig — псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале. Вызов:

    make menuconfig
  • gconfig и xconfig — графические конфигураторы для ручной настройки. Вызов:

    make gconfig

    и

    make xconfig

    соответственно

  • localmodconfig и localyesconfig — автоматические конфигураторы. Конфиг создается на основе вызванных в данных момент модулей и запущенного ядра. Разница между этими двумя конфигураторами в количестве модулей. В первом случае их будет не менее 50% ядра, а во-втором не больше 2 модулей. Вызов:

    make localmodconfig

    и

    make localyesconfig

    соответственно

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

Типы команд

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

Таблица 2. Основные типы команд
Типы операции Примеры
Арифметические и логические Целочисленные арифметические и логические операции: сложение, вычитание, логическое сложение, логическое умножение и т.д.
Пересылки данных Операции загрузки/записи
Управление потоком команд Безусловные и условные переходы, вызовы процедур и возвраты
Системные операции Системные вызовы, команды управления виртуальной памятью и т.д.
Операции с плавающей точкой Операции сложения, вычитания, умножения и деления над вещественными числами
Десятичные операции Десятичное сложение, умножение, преобразование форматов и т.д.
Операции над строками Пересылки, сравнения и поиск строк

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

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

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

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

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

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

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

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

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

Или:

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

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

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

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

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

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

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

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

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

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

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

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

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

Программа:

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

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

Выведет:

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

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

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

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

Надеюсь, что статья помогла.

Во-вторых, процедуры работы с компиляцией

Компиляционная программа введения представит два метода

  1. Установлен перед использованиемОдно-кнопочная компиляция работает программа
  2. Открыть vscode.Используйте командную строку для компиляции и запуска

Нажмите: Файл> Новый файлСуществует пустой документ, я подготовил тестовый код, пожалуйста, скопируйте вставку в пустой документ.

Затем нажмите Ctrl + S иИзмените имя суффикса файла вили жеСохраните к компьютеру, затем нажмите кнопку треугольника в правом верхнем углу (оригинал этого места, это кнопка для добавления кнопки после установки плагина Runner Code) или нажмите Ctrl + Alt + N, чтобы скомпилировать текущую программу.

ЭтоСпособ выполнения программ с использованием плагина бегуна кодаНажмите на верхний правый уголУрна для мусораЗначок может напрямую заканчивать программу

В то же время нажмите Ctrl + ~ Откройте встроенный терминал, чтобы ввести инструкцию командной строки для компиляции операции.

Давайте начнем формально настроить среду отладки

Во-первых, вы создадите папку на вашем компьютере, у вас будет новая папка для хранения письменного кода, а затем настроить среду отладки, просто вступайте в силу на подкаталоге, хранящемся в этой папке и папках!

После новой папки в интерфейсе VSCODE нажмите: Файл> Откройте папку, откройте вновь созданную папку (мое имя папки код)

Нажмите на новую папку, чтобы создать новый под открытой папкой.Папка (обратите внимание на фронт ».»

Затем в папке .vscode вновь построили два файла JSON

  • launch.json
  • tasks.json

Затем скопируйте следующий код в соответствующий файл JSON и сохраните

launch.json

tasks.json

На самом деле, теперь вы можете отладить его.

И в это времяctrl+shift+b Позвоните непосредственно настроить компилятор задач G ++ без запуска программы, аналогично некоторым параметрам компиляции IDE

Многие места не более подробно, некоторые места могут быть переданы

Tang Ming: Windows 10 использует VSCode Compilation и Debug C / C ++​
zhuanlan.zhihu.com

Практические задания

  1. Просмотреть информацию и список файлов пакета AnotherLevel. Найти в списке
    файлов, какие к этому пакету прилагаются man-страницы.
  2. Выдать на экран список всех пакетов, в имени которых есть «ftp«.
  3. Посмотреть, от каких пакетов зависит пакет AnotherLevel.
  4. Выполнить проверку пакета xterm-color, сначала как обычный
    пользователь, а затем как «root«. Объяснить полученные результаты.
  5. Установить из бинарного дистрибутива программу NEdit (не забыв про man!), дистрибутив лежит по
    адресу

  6. Собрать и установить программу lftp,
    дистрибутив лежит по адресу

  7. Собрать и установить программу xtetris,
    дистрибутив лежит по адресу

    Для
    этого надо предварительно установить пакет XFree86-devel. Его
    .-rpm-файл расположен в директории

1999

Способы конфигурации ядра Linux

За время развития Linux постепенно сложились четыре основных способа для конфигурирования её ядра:

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

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

Обзор

Архитектура набора команд отличается от микроархитектуры , которая представляет собой набор методов проектирования процессора , используемых в конкретном процессоре для реализации набора команд. Процессоры с разной микроархитектурой могут использовать общий набор команд. Например, Intel Pentium и Advanced Micro Devices Athlon реализуют почти идентичные версии набора инструкций x86 , но имеют радикально разные внутренние конструкции.

Концепция архитектуры , отличная от конструкции конкретной машины, была разработана Фредом Бруксом из IBM на этапе проектирования System / 360 .

Некоторые виртуальные машины , что поддержка байткод как их ISA , такие как Smalltalk , в виртуальной машине Java и Microsoft «s Common Language Runtime , осуществить это путем перевода байт — кода для наиболее часто используемых кодов путей в машинный код. Кроме того, эти виртуальные машины выполняют менее часто используемые пути кода путем интерпретации (см. Своевременная компиляция ). Таким образом Transmeta реализовала набор инструкций x86 на процессорах VLIW .

Openhours #7: Cross compiling on x86 Linux systems for ARM (96Boards)

Openhours #7: Cross compiling on x86 Linux systems for ARM (96Boards)

Коллекция компиляторов GNU (GCC) — это коллекция компиляторов и библиотек для языков программирования C, C ++, Objective-C, Fortran, Ada, Go и D. Многие проекты с открытым исходным кодом, включая инструменты GNU и ядро ​​Linux, скомпилированы с GCC.

В этом руководстве рассматриваются шаги, необходимые для установки компилятора GCC в Ubuntu 18.04. Мы покажем вам, как установить стабильную версию дистрибутива и последнюю версию GCC.

Те же инструкции применимы для Ubuntu 16.04 и любого дистрибутива на основе Ubuntu, включая Kubuntu, Linux Mint и Elementary OS.

Предпосылки

Чтобы иметь возможность добавлять новые репозитории и устанавливать пакеты в вашей системе Ubuntu, вы должны войти в систему как пользователь root или пользователь с привилегиями sudo.

Установка GCC на Ubuntu

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

Выполните следующие шаги для установки компилятора GCC Ubuntu 18.04:

  1. Начните с обновления списка пакетов:

    Установите пакет , набрав:

    Команда устанавливает несколько новых пакетов, включая , и .

    Вы также можете установить страницы руководства по использованию GNU / Linux для разработки:

    Чтобы проверить, что компилятор GCC успешно установлен, используйте команду которая печатает версию GCC:

    Версия GCC по умолчанию, доступная в репозиториях Ubuntu 18.04, — :

Вот и все. GCC теперь установлен в вашей системе, и вы можете начать его использовать.

Компиляция примера Hello World

Компиляция базовой программы на C или C ++ с использованием GCC довольно проста. Откройте ваш текстовый редактор и создайте следующий файл:

Привет

Сохраните файл и скомпилируйте его в исполняемый файл с помощью следующей команды:

Это создаст двоичный файл с именем в том же каталоге, где вы запускаете команду.

Выполните программу с:

Программа должна напечатать:

Установка нескольких версий GCC

В этом разделе приведены инструкции по установке и использованию нескольких версий GCC в Ubuntu 18.04. Новые версии компилятора GCC включают поддержку новых языков, лучшую производительность, расширенные функции.

На момент написания этой статьи стандартные репозитории Ubuntu включали несколько версий GCC, от до Последняя версия GCC, которая является , доступна из Ubuntu Toolchain PPA.

В следующем примере мы установим последние три версии GCC и G ++.

Во-первых, добавьте PPA в вашу систему с помощью:

Установите нужные версии GCC и G ++, набрав:

Команды ниже настроят альтернативу для каждой версии и свяжут с ней приоритет. По умолчанию используется версия с наивысшим приоритетом, в нашем случае это .

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

Вам будет представлен список всех установленных версий GCC в вашей системе Ubuntu. Введите номер версии, которую вы хотите использовать по умолчанию, и нажмите .

Команда создаст символические ссылки на конкретные версии GCC и G ++.

Вывод

Вы успешно установили GCC на Ubuntu 18.04. Теперь вы можете посетить официальную страницу документации GCC и узнать, как использовать GCC и G ++ для компиляции ваших программ на C и C ++.

GCC Ubuntu

Batch Compiler — это бесплатное программное обеспечение, которое позволяет скомпилировать пакет сценариев файлы в файл .exe installe.

Коллекция компиляторов GNU (GCC) — это коллекция компиляторов и библиотек с открытым исходным кодом, поддерживающая C, C ++ и другие языки программирования. Из этого туториала Вы узнаете, как установить компилятор GCC на Debian 10 Buster.

Коллекция компиляторов GNU (GCC) — это коллекция компиляторов и библиотек для языков программирования C, C ++, Objective-C, Fortran, Ada, Go и D. В этом руководстве рассматриваются шаги, необходимые для установки компилятора GCC в CentOS 7.

Заключение

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

Многие программы кроме собственно исполняемого файла (а чаще файлов) содержат
еще некоторое количество файлов конфигурации и библиотек, которые следует
поместить в строго определенные места (обычно внутри директории lib/) и
man-страниц.

Кроме того, часто после установки требуется выполнить «руками» некоторые
дополнительные действия — например, добавить в стартовые файлы shell установку
некоторых переменных окружения, модифицировать конфигурацию window manager’а
(добавить программу в меню или настроить ее автоматический запуск).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: