Платформа Ubuntu 20.04 для перекрестной компиляции библиотеки glib

Что такое бойкий?

  • glib — относительно мощная программная библиотека, похожая на библиотеку libc.

перекрестная компиляция

  • В настоящее время его необходимо портировать на платформу arm (32-разрядная версия ARM), а glib необходимо скомпилировать с помощью цепочки инструментов кросс-компиляции arm.

Подготовка окружающей среды

  • убунту 20.04

  • Установите более новую версию мезона: >= 0,60, напримерmeson 0.63

  • Последний склад git clone glib, текущая версия: v2.77, официальная версия релиза: v2.76

скачать бойкий

  • Его можно вытащить из официального git-клона glib: адрес https://gitlab.gnome.org/GNOME/glib , скорость относительно низкая

  • Вы можете вытащить его на github: https://github.com/GNOME/glib , github нестабилен, но после подключения скорость все еще очень высока.

Настроить кросс-компиляцию

  • Напишите файл конфигурации кросс-компиляции: используйте arm-linux-gnueabihf-gccнабор инструментов, версия здесь gcc version 13.0.0 20221001, рекомендуется использовать более новую версию набора инструментов кросс-компиляции gcc.

  • Создадим файл конфигурации: cross_arm.txt, содержание будет следующим

[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'arm'
endian = 'little'

[properties]
c_args = []
c_link_args = []

[binaries]
c = 'arm-linux-gnueabihf-gcc'
cpp = 'arm-linux-gnueabihf-g++'
ar = 'arm-linux-gnueabihf-ar'
ld = 'arm-linux-gnueabihf-ld'
objcopy = 'arm-linux-gnueabihf-objcopy'
strip = 'arm-linux-gnueabihf-strip'
pkgconfig = 'arm-linux-gnueabihf-pkg-config'
  • Установить и обновить мезон$ sudo apt install meson

  • Обновите мезон до версии 0.60 и выше:

sudo apt install python3-pip
pip3 install meson==0.63

Установите arm-linux-gnueabihf-pkg-config

  • sudo apt install pkg-config-arm-linux-gnueabihf

Загрузите и настройте цепочку инструментов для кросс-компиляции рук.

export PATH=$PATH:/home/zhangsz/tools/gcc-linaro-13.0.0-2022.10-x86_64_arm-linux-gnueabihf/bin

  • Обратите внимание, что путь цепочки инструментов кросс-компиляции arm является фактическим путем хранения цепочки инструментов кросс-компиляции gcc.

  • Затем source /etc/profileвключите переменную среды, которую вы можете ввести arm-linux-gnueabihf-gcc -v, чтобы подтвердить, действительна ли цепочка инструментов кросс-компиляции gcc.

вставьте сюда описание изображения

скомпилировать бойкий

  • Шаги компиляции
meson --prefix=/home/rtt/linux/libs/glib_libs -Ddefault_library=both --cross-file cross_arm.txt builddir
ninja -C builddir
ninja -C builddir install
  • Вот --prefix=/home/rtt/linux/libs/glib_libsкаталог установки библиотеки lib, сгенерированной glib, поскольку она кросс-компилирована и скомпилирована, ее нельзя установить напрямую в каталог системы ПК, и необходимо указать фактический путь.

  • Вот --cross-file cross_arm.txtфайл конфигурации кросс-компиляции meson, созданный выше, если набор инструментов кросс-компиляции gcc отличается, вы можете изменить его

  • ninja -C builddirКомпиляция builddir— это директория для хранения скомпилированных файлов, с которых может ninja -C builddir -j8запускаться многопоточная компиляция.

  • ninja -C builddir install, после завершения компиляции продукт находится в builddirкаталоге, и есть много временных файлов, которые можно скопировать в --prefix=/home/rtt/linux/libs/glib_libsуказанный каталог при установке

  • [Примечания] Кросс-компилированную библиотеку glib нельзя установить по пути текущей хост-системы ПК, например, в каталог /usr/lib.

скомпилированный продукт

  • Текущая последняя версия glib автоматически загружает несколько подхранилищ, когда она встроена в meson.Если загрузка не удалась, вы можете попробовать еще несколько раз.

  • Скомпилированный продукт выглядит следующим образом:

вставьте сюда описание изображения

  • Библиотека и заголовочные файлы все есть
zhangsz@zhangsz:~/linux/libs/glib_libs$ ls
bin  include  lib  libexec  share
  • С тех пор была завершена кросс-компиляция платформы glib arm, и эта библиотека glib может быть применена к встроенной системе ARM Linux.

краткое содержание

  • Текущая последняя версия glib, такая как версия v2.77, когда мезон создает конфигурацию, он автоматически извлекает подмодули, поэтому он может быть медленным (обратите внимание на скорость внешней сети), процесс сборки мезона автоматически извлекает зависимые подмодули, такие как libz, libffi, libpcre2 и т. д., хранящиеся в subprojectsкаталоге glit

  • Функция glib относительно мощная, и на складе имеется множество тестовых случаев: например, в подкаталоге glib хранятся glib/testsтестовые glitслучаи подмодулей , которые можно использовать для проверки функции glit.

Acho que você gosta

Origin blog.csdn.net/tcjy1000/article/details/131256789
Recomendado
Clasificación