Кросс-компиляция MariaDB
Buildroot
Buildroot — это способ кросс-компиляции MariaDB и других пакетов в корневую файловую систему. В меню конфигурации menuconfig необходимо сначала включить "Enable C++ Support" в разделе "Toolchain". После включения C++ MariaDB будет доступен в "Target Packages" -> "Libraries" -> "Databases" -> "mysql support" -> "mysql variant" -> "mariadb". Также включите "mariadb server" ниже опции "mysql support".
Детали
Для кросс-компиляции с помощью cmake вам потребуется файл цепочки инструментов. См., например, здесь. Помимо специфичных для cmake переменных, он должен содержать, по меньшей мере
SET(STACK_DIRECTION -1) SET(HAVE_IB_GCC_ATOMIC_BUILTINS 1)
с соответствующими значениями для вашей целевой архитектуры. Обычно эти настройки конфигурации MariaDB обнаруживаются при запуске небольшой тестовой программы, и это невозможно при кросс-компиляции.
Обратите внимание, что во время сборки несколько вспомогательных инструментов компилируются, а затем сразу используются для генерации дополнительных исходных файлов для этой же сборки. При кросс-компиляции эти инструменты, естественно, должны быть скомпилированы для архитектуры хоста, а не для целевой архитектуры. Сделайте это так (предполагая, что вы находитесь в дереве исходных кодов MariaDB):
$ mkdir host $ cd host $ cmake .. $ make import_executables $ cd ..
Теперь помощники скомпилированы, и вы можете выполнить кросс-компиляцию:
$ mkdir target $ cd target $ cmake .. -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchain/file.cmake -DIMPORT_EXECUTABLES=../host/import_executables.cmake $ make
Здесь вы вызываете cmake, указывая путь к файлу вашей цепочки инструментов и путь к import_executables.cmake, который вы только что скомпилировали на предыдущем шаге. Конечно, вы также можете указать любые другие параметры cmake, которые могут быть необходимы для этой сборки, например, включить или отключить определенные движки хранения.
См. также https://lists.launchpad.net/maria-discuss/msg02911.html
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/cross-compiling-mariadb/