Скомпилируйте программу Qt на Ubuntu 18.04, которая будет работать на Ubuntu 14.04 - PullRequest
0 голосов
/ 11 ноября 2018

Интересные делемы.

Попытка скомпилировать программу Qt, в которой Qt собирается из исходного кода 18.04, 64-битная, и запустить ее 14.04. Интересная часть - попытаться определить, какие библиотеки мне нужны в этот раз. ABI C ++ изменился.

Хотите посмотреть, делал ли это кто-то еще недавно? Какие библиотеки мне нужно взять с собой? Да, я знаю о ldd и readelf и провел дни, пробуя это на разных виртуальных машинах. Проблема в том, что как только вы начинаете переносить содержимое C ++ (поскольку ABI снова изменился), вы попадаете в точку, когда ваша виртуальная машина не перезагружается.

Пожалуйста, не предлагайте snappy, flatpak или одно из этих новых "контейнерных" решений. Уже потрачено 3+ дня на Снейппи. Он специфичен для конкретной архитектуры и поддерживает сборку 14.04 только когда дело доходит до Qt, по крайней мере, инструмент deployqt для создания AppImage.

Сделал это много лет назад с этой самой программой. Создан Debian, который будет устанавливаться как на 64-битной, так и на 32-битной версии для каждой версии с 12.04 по 15.04, включая версии с коротким сроком службы .10 и нечетного года.

Я попытался скомпилировать QT со стандартом C ++ 11, но он больше не будет компилироваться с этим стандартом.

Несовместимый ABI - настоящий убийца.

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

Ценю понимание.

Спасибо.

1 Ответ

0 голосов
/ 11 ноября 2018

Пожалуйста, всегда разрабатывайте приложения в самом старом дистрибутиве, на котором вы все еще хотите, чтобы ваше приложение работало. Например, если вы хотите, чтобы ваше приложение работало на всех поддерживаемых в настоящее время версиях Ubuntu, разработайте ваше приложение на Ubuntu 14.04 и не устанавливайте какие-либо более новые компиляторы или библиотеки, чем те, с которыми оно поставляется.

Так работает «обратная совместимость».

...