Для человека с некоторым опытом кросс-компиляция обычно не представляет труда, но для тех, кто впервые этим занимается не так уж это и просто. Для них и написана данная статья.
Исходные данные
Сборка библиотеки expat выполняется для процессора arm.
Уточню, что библиотека expat нужна мне для последующей сборки bluez
Для сборки нужен toolchain. Я использую toolchain, собранный для библиотеки glibc (думаю для uClibc отличий быть не должно)
Директория с бинарниками кросс-компилятора должна находится у вас в переменной PATH. Иными словами компилятор (например arm-unknown-linux-gnueabi-gcc) должен запускаться прямо из текущей директории.
Исходники можно взять здесь.
Страница самого проекта находится здесь.
Для меня удобней написать отдельный сборочный скрипт (чем запускать команды непосредственно в консоли).
Итак, создаём файл 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.
Библиотека была собрана с использованием glibc, при использовании в системе с uClibc работать не будет.
(извините, ссылка не доступна).