UsingCrosstool – Розробка програмного забезпечення кафедри docs

Якщо потрібно скомпілювати нативний код для апаратної архітектури, відмінної від тієї, до якої належить ваша робоча машина, то для цього потрібна крос-компіляція. При складанні ядра Linux завдання крос-компіляції сильно спрощується тим, що немає потреби в крос-компіляції будь-яких бібліотек, достатньо мати крос-компілюючий компілятор С (пакет gcc), асемблер та утиліти для роботи з об'єктними файлами (все це входить до пакету binutils).

Зазначимо, що архітектури amd64 та i386 вважаються ядром ідентичними та необхідності у створенні крос-компілятора немає. Ми розглянемо різання крос-компілятора для архітектури arm.

Створення крос-компілятора

Першим кроком є ​​створення інструменту для крос-компілцяії, який зазвичай називається "тулчейн для крос-компіляції" (відcross-compile toolchain ). Завдання взагалі досить просто виконати, зібравши gcc і binutils вручну з потрібними параметрами конфігурації, але для зменшення ручної роботи та уніфікації процесу скористаємося програмою для створення крос-компіляторів під назвою crosstool-ng.

Установка Crosstool-NG

Для початку потрібно поставити необхідні пакети, зокрема клієнт системи контролю версій CVS та бібліотеку libncurses. Команда їх установки для дистрибутивів, заснованих на Debian, виглядає так.

Тепер скачаємо уи встановимо сам пакет crosstol-ng.

Налаштування та складання крос-компілятора

Для складання нам знадобиться якась порожня директорія та файл конфігурації. Для прохання процесу можна скористатися готовим файлом конфігурації cross-config-arm для архітектури ARM (little endian).

Можете сказати ct-ng menuconfig та подивитися на вашу цільову архітектуру. Тепер зберемо тулчейн.

Будуть завантажені та зібрані вихідні коди gcc і binutils,так що ви можете піти попити чаю. У разі успіху вони з'являться у директорії

/x-tools. Увага: процес складання краще не переривати, частково завантажені чи розпаковані архіви доведеться вбивати вручну.

Використання крос-компілятора

Додамо в змінну PATH діекторію зі створеним тулубом. Ми зробимо це для командної оболонки bash.

Не забудьте запустити новий екземпляр bash, щоб змінити файл

/.bashrc набрали чинності.

Для складання ядра створеним тулчейном потрібно буде використовувати одну з наступних команд.

Не забудьте створити або взяти конфігурацію ядра.

Якщо ви зібрали Qemu? з підтримкою емуляції ARM, для запуску ядра можна використовувати команду виду

Про всяк випадок так само викладаю штатне ядро ​​і initrd: