Введение
Для человека с некоторым опытом кросс-компиляция обычно не представляет труда, но для тех, кто впервые этим занимается не так уж это и просто. Для них и написана данная статья.
Исходные данные
Сборка библиотеки expat выполняется для процессора arm.
Уточню, что библиотека expat нужна мне для последующей сборки bluez
Для сборки нужен toolchain. Я использую toolchain, собранный для библиотеки glibc (думаю для uClibc отличий быть не должно)
Директория с бинарниками кросс-компилятора должна находится у вас в переменной PATH. Иными словами компилятор (например arm-unknown-linux-gnueabi-gcc) должен запускаться прямо из текущей директории.
Где взять исходники библиотеки expat
Исходники можно взять здесь.
Страница самого проекта находится здесь.
Скрипт сборки
Для меня удобней написать отдельный сборочный скрипт (чем запускать команды непосредственно в консоли).
Итак, создаём файл crosscompile.sh.
Добавляем права на запуск (команда chmod +x crosscompile.sh)
Добавляем туда строки:
./configure \
--prefix=$HOME/programs/newArm2/compiled/expat \
--host=arm-unknown-linux-gnueabi \
&&make && make install
Пояснения
--prefix это путь, куда будет установлена библиотека expat. Этот путь нужно заменить на свой
--host указывает на префикс кросс-компилятора. Нужно заменить его на ваш компилятор. Иногда я встречал прямое указание компилятора, линкера и других утилит, например СС=arm-unknown-linux-gnueabi-gcc LD=arm-unknown-linux-gnueabi-ld. Работать будет, но этого делать не надо, для этого вы и указываете параметр --host, а нужное название команды подставляется в конец автоматически
Сборка
Для сборки достаточно выполнить:
./crosscompile.sh
Последующая установка
Собранная библиотека находится в некой папке $HOME/programs/newArm2/compiled/expat. Чтобы добавить её в вашу будущую систему, необходимо вручную скопировать всё в папку sys-root/usr вашего тулчейна.
Возможные проблемы
Проблем при сборке возникнуть не должно. Если у вас что-то не получилось - оставьте комментарий внизу страницы.
Скачать библиотеку libexpat для ARM
Для удобства выкладываю свою версию уже собранной библиотеки libexpat для ARM.
Библиотека была собрана с использованием glibc, при использовании в системе с uClibc работать не будет.
(извините, ссылка не доступна).
Статьи по данной тематике: