Всем привет!
Я делаю маленькое приложение на Qt 5, со статической линковкой под Windows, Linux, FreeBSD, macOS. Базово задачу статической линковки я решил, пусть и немного криво, так как:
- куча виртуалок для сборки под конкретный environment - по две на каждую ось, кроме macOS (так как там нет i686), если добавить еще и aarch64, то будет вообще катастрофа
- в одном и том же дистрибутиве Linux на разных архитектурах почему-то линкуется разный набор библиотек, хотя через apt ставилось одно и то же и конфигурация при компиляции Qt одинаковая. Во FreeBSD ситуация еще хуже, там надо руками подбирать версии зависимостей
Я прочитал, что решить эти проблемы поможет использование chroot и дальнейшей кросс-компиляции через него (через передачу sysroot при сборке Qt). Таким образом должно быть можно собрать окружение для Windows, Linux, FreeBSD на одной единственной виртуалке, но есть нюанс: простое копирование директорий /usr/include и /usr/lib из целевых систем мне скорее всего не поможет, т.к. они унаследуют проблемы с зависимостями из оригинальных окружений.
В связи с этим вопрос: можно ли как-то подобрать нужные версии библиотек (xlib, xkbcommon, glibc, etc…) и собрать их вручную, чтобы точно был нужный состав либ и их версии? Или это как-то по-другому делается?
Также было бы здорово, если в меня кинут какую-нибудь статью по данной теме.
Буду очень благодарен за любые подсказки :)