Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Кросс-компиляция Mozilla

Mozilla

Содержание

  1. Настройка среды кросс-компиляционной сборки
    1. Кросс-компиляция binutils
    2. Инсталляция целевых системных заголовочных файлов и библиотек
    3. Кросс-компиляция gcc
    4. Проверка
    5. Кросс-компиляция glib, libIDL и gtk+
  2. Кросс-компиляция ящерицы

Общую информацию о кросс-компиляции вы можете найти в главе Инструменты кросс-компиляции документа Система конфигурирования и сборки GNU.

Если ваша задача состоит в том, чтобы скомпилировать 32-битный Firefox на 64-битной ОС Linux, вам нет необходимости делать полную кросс-компиляцию... Читайте эту упрощённую инструкцию.

Настройка среды кросс-компиляционной сборки

Этот параграф не является руководством типа «окончательно-во-всех-подробностях» о создании окружения для кросс-компиляции. WFM; YMMV. (Если вы хотите спросить «Где я могу получить...?» или «Почему не работает 'X'?», то это не для вас.)

Во всех примерах этой статьи используются следующие обозначения:

1. xtarget_arch — название целевой системы (например, i686-linux)
2. xprefix — местоположение иерархии каталогов кросс-компиляции (например, /usr/sparc-linux)

Вы должны добавить ${xprefix}/bin в переменную PATH.

Кросс-компиляция binutils

Скачайте binutils и примените к ней binutils-cross-libpath.patch, который облегчает установку готовых библиотек. Запустите configure с помощью следующей команды:

env CROSS_LIB_PATH="${xprefix}/${xtarget_arch}/lib:${xprefix}/${xtarget_arch}/usr/lib" ./configure --prefix=${xprefix} --target=${xtarget_arch}

Соберите и инсталлируйте пакеты в системе.

Инсталляция целевых системных заголовочных файлов и библиотек

GCC и binutils будут искать системные заголовочные файлы и библиотеки по адресу ${xprefix}/${xtarget_arch}, так что вам необходимо скопировать туда файлы вашей целевой системы сохранив структуру директорий и, если нужно, изменив какие-то скрипты. Также вы должны скопировать библиотеку X11 и директории для include.

Замечание: Если ваша целевая система использует glibc, вы должны специально позаботиться об изменении локальной копии файла /usr/lib/libc.so (который фактически является скриптом) таким образом, чтобы он видел файлы в $xprefix/$target_arch лучше, чем в /usr.

Если вы уже имеете rpm-ы для целевой системы и rpm инсталлированы в сборочной системе, то вы можете использовать сокращённый скрипт, который будет инсталлировать rpm-ы в $xprefix/$xtarget_arch с помощью rpm2cpio.

Кроме того, если вы используете Debian или Ubuntu, то можете использовать команды dpkg-cross или apt-cross для инсталляции заголовочных файлов и библиотек под целевую систему.

Кросс-компиляция gcc

Скачайте gcc и запустите configure следующей командой:

./configure --prefix=${xprefix} --with-gnu-ld --with-gnu-as --target=${xtarget_arch} --disable-nls --enable-languages=c++,objc

Соберите и инсталлируйте пакет в системе.

Проверка

К этому моменту ваша среда кросс-компиляции должна быть полностью готова. Теперь проверим, как она работает. Возьмём Hello World и проделаем работу для этого простого приложения, основанного на X11.

Для сборки большинства пакетов должно быть достаточно команды ./configure --target=${xtarget_arch}.

Для остальных вам может понадобиться явно указать установки для сборочных инструментов:

env AR=${xtarget_arch}-ar CC=${xtarget_arch}-gcc CXX=${xtarget_arch}-g++ LD=${xtarget_arch}-ld AS=${xtarget_arch}-as ./configure --prefix=${xprefix} --target=${xtarget_arch}

Кросс-компиляция glib, libIDL и gtk+

Этот шаг необходим только если вы не инсталлировали предварительно собранные версии этих пакетов. Используйте описанные выше шаги для их сборки и инсталляции.

Кросс-компиляция ящерицы

Считая, что вы должным образом, как это описано выше, настроили среду кросс-компиляционной сборки, можно довольно просто кросс-скомпилировать Mozilla даже несмотря на то, что NSS не настроен для кросс-компиляции должным образом (баг 104541)

Главное, что нужно помнить, это то что если для configure указывается --target=${xtarget_arch}, то configure ожидает найти инструмент для компиляции в виде ${xtarget_arch}-TOOL, где TOOL — это gcc, g++, ranlib и т.д.

Вы должны ввести следующие аргументы среды окружения для configure:

CROSS_COMPILE=1
HOST_LIBIDL_CONFIG='libIDL-config-2 --prefix=/path/to/build/system'
HOST_LIBIDL_CFLAGS='-I/path/to/build/system/include/libIDL-2.0 -I/path/to/build/system/include/glib-2.0 -I/path/to/build/system/include'
HOST_LIBIDL_LIBS='-L/path/to/build/system/lib -lIDL-2 -lglib-2.0'
LIBIDL_CONFIG='libIDL-config-2 --prefix=/path/to/target/system'
export PKG_CONFIG_PATH=/path/to/target/system/lib/pkgconfig

и следующие аргументы командной строки для configure:

--target=${xtarget_arch}

Приведем пример файла mozconfig, используемого для кросс-компиляции под целевую систему mipsEEel-linux:

# sh
# Скрипт конфигурации сборки
# Инструкции по сборке смотрите здесь:
# https://developer.mozilla.org/en/Linux_Build_Prerequisites.
#
CROSS_COMPILE=1
HOST_LIBIDL_CONFIG='/usr/bin/libIDL-config-2 --prefix=/usr'
HOST_LIBIDL_CFLAGS='-I/usr/include/libIDL-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include'
HOST_LIBIDL_LIBS='-L/usr/lib -lIDL-2 -lglib-2.0'
LIBIDL_CONFIG='/usr/bin/libIDL-config-2 --prefix=/usr/mipsEEel-linux'
export PKG_CONFIG_PATH=/usr/mipsEEel-linux/lib/pkgconfig

# Не используйте pkg-config для главного libIDL
ac_add_options --without-libIDL
ac_add_options --prefix=/usr/mipsEEel-linux
ac_add_options --target=mipsEEel-linux

# Опции для 'configure' (те же, что и опции командной строки).
# Всё перечисленное здесь можно вручную править в файле конфигурации.
ac_add_options --enable-application=browser
ac_add_options --enable-mathml
ac_add_options --enable-extensions
#ac_add_options --enable-crypto
ac_add_options --enable-logrefcnt

ac_add_options --without-system-nspr
ac_add_options --without-system-zlib
ac_add_options --without-system-jpeg
ac_add_options --without-system-png

Автор: Chris Seawood, 22.06.2002.
Перевод: Дмитрий Скоробогатов, 20.09.2011.
Оригинальный текст можно найти по адресу https://developer.mozilla.org/en/Cross-Compiling_Mozilla.


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2011-12-15 16:19:52

Метки материала: компиляция, mozilla, кросс-компиляция, компиляция mozilla, веб-браузер, приложение прикладная программа, application, бесплатные программы, бесплатное по, приложение, firefox, браузер, разработка по, мозила, browser, интернет-браузер, xulrunner, спо, soft

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.