Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

Пустовий Андрій, 5321

Лабораторна робота №1

Мета: навчитися компілювати власний інструментарій крос-компіляції для


бібліотеки musl C.

Встановлюємо лабораторні дані. Завантажуємо та розпаковуємо tar-


архів з терміналу командами:

$ wget https://bootlin.com/doc/training/embedded-linux-bbb/embedded-linux-bbb-
labs.tar.xz

$ tar xvf embedded-linux-bbb-labs.tar.xz

Дані лабораторних робіт тепер доступні у каталозі embedded-linux-bbb-labs у


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

Оновлюємо дистрибутив командою:

$ sudo apt update

Cтворюємо інструментарій для крос-компіляції. Заходимо в потрібну


директорію командою $HOME/embedded-linux-bbb-labs/toolchain

Встановлюємо потрібні пакети командою:

$ sudo apt install build-essential git autoconf bison flex texinfo help2man gawk
libtool-bin \libncurses5-dev unzip

Отримаємо Crosstool-ng. Завантажимо вихідні коди Crosstool-ng з його


git-репозиторію і перейдемо до перевіреного нами комміту командами:
$ git clone https://github.com/crosstool-ng/crosstool-ng

$ cd crosstool-ng/

$ git checkout 36ad0b1

Збірка та встановлення Crosstool-ng. Оскільки збираємо Crosstool-ng не


з архіву, а з git-репозиторію, спочатку потрібно згенерувати конфігураційний
скрипт і, загалом, усі згенеровані файли, які постачаються у вихідному архіві
релізу командою: $ ./bootstrap
Після цього можемо або встановити Crosstool-ng глобально у системі,
або тримати його локально у каталозі завантаження. Виберемо останній
варіант командами:

$ ./configure --enable-local

$ make

Переглянемо конфігурації, що поставляються разом з crosstoo-ng.


Найбільш підходяща конфігурація для BeagleBoneBlack – це arm-cortex_a8-
linux-gnueabi. Команда:

$ ./ct-ng list-samples
Подивимося основні параметри конфігурації arm-cortex_a8-linux-
gnueabi командою:

$ ./ct-ng show-arm-cortex_a8-linux-gnueabi

Завантажимо дану конфігурацію, виконавши команду:

$ ./ct-ng arm-cortex_a8-linux-gnueabi

Внесемо зміни у конфігурацію за допомогою утиліти menuconfig:

$ ./ct-ng menuconfig

У розділі Path and misc options встановити опцію Try features marked as

EXPERIMENTAL. Зняти опцію Render the toolchain read-only:


У розділі Target Options задати у Use specific FPU (ARCH_FPU)
параметр vfpv3 та встановити у Floating point опцію hardware (FPU):
У розділі Toolchain options задати Tuple’s vendor string
(TARGET_VENDOR) як training. Встановити Tuple’s alias (TARGET_ALIAS)
як arm-linux:

У розділі Operating System задати версію linux 6.1.x:


У розділі C-library обрати musl (LIBC_MUSL), версію бібліотеки
залишити ту, яку запропоновано конфігуратором:

У розділі C compiler встановити версію gcc 12.3.0. Перевірити, чи


обраний пункт C++ (CC_LANG_CXX):
У розділі Debug facilities зняти всі опції:

Збережемо файл конфігурації, обравши «Save». Після виходу з


конфігуратора можна зібрати набір інструментів, виконавши команду:

$ ./ct-ng build

Набір інструментів успішно встановився.

You might also like