Что такое бойкий?
- 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
Загрузите и настройте цепочку инструментов для кросс-компиляции рук.
-
Адрес загрузки https://snapshots.linaro.org/gnu-toolchain/ ,
-
Вы также можете перейти к официальной загрузке ARM https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads.
-
Загрузите и разархивируйте цепочку инструментов кросс-компиляции arm в указанное место, а затем настройте переменные среды:
-
Можно изменить
/etc/profile
, добавить позже
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.