Потребовалось сделать окружение для отстройки приложений для системы Linux, запущенной на платформе с процессором ARM.
Внутри есть eglibc, поэтому решено было попробовать сделать окружение с этой библиотекой Си, а не повсеместно используемой newlib.
Процесс чтения манов, проб, нервов занял около двух дней. Помогли разобраться следующие документы:
- http://www.eglibc.org/cgi-bin/viewvc.cgi/trunk/libc/EGLIBC.cross-building?view=markup - официальное руководство по кросс-компиляции eglibc
- http://www.pgroup.com/userforum/viewtopic.php?t=1636 - помогло разобраться в одной ошибке
-
http://gcc.gnu.org/install/configure.html - изучение секции Cross-Compiler-Specific Options в частности на предмет опций
--with-sysroot
и--with-build-sysroot
Особо поразило мозг решение проблемы “кто первый: курица или яйцо?”
В результате получился набор правил для сборки окружение под ArchLinux (пакеты идут в порядке сборки):
- arm-linux-gnueabi-binutils
- arm-linux-gnueabi-linux-api-headers
- arm-linux-gnueabi-gcc-stage1 - первый кросс-компилятор для отстройки базовых компонент стандартной библиотеки
- arm-linux-gnueabi-eglibc-headers - базовый набор стандартной библиотеки - только заголовочные файлы и несколько стабов. Ещё не пригодна для линковки.
- arm-linux-gnueabi-gcc-stage2 - компилятор уже пригодный для отстройки стандартной библиотеки
- arm-linux-gnueabi-eglibc - готовая стандартная библиотека Си
- arm-linux-gnueabi-gcc - компиляторы Си и Си++
Ну и несколько библиотек сразу в придачу: