Задать вопрос

Как сделать переносимость Qt приложения?

Написал простейшее приложение на Qt, выводит hello.
Сборку сделал на одной виртуалке с Ubuntu 18.04 и Qt 5.14 установленной с официального сайта qt.
А бинарник запускаю на второй виртуалке с Ubuntu 18.04, но c установленным из репозитория библиотекой версии 5.9.5

Пример действий:
Смотрю недостающие библиотеки, не хватает libQt5Core.so.5
ldd checkOnline
        linux-vdso.so.1 (0x00007ffd227e6000)
        libQt5Core.so.5 => not found
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb1951ea000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb194fd2000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb194be1000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb194843000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fb195776000)


Устанавливаю пакет с нужной либой:
apt install libqt5gui5

Проверяю, нашёл нужную либу, но ругается на потребность более высокой версии:
ldd checkOnline
./checkOnline: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.14' not found (required by ./checkOnline)
        linux-vdso.so.1 (0x00007fffa4d38000)
        libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f1d46f0e000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1d46b85000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1d4696d000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1d4657c000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1d4635d000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1d46140000)
        libicui18n.so.60 => /usr/lib/x86_64-linux-gnu/libicui18n.so.60 (0x00007f1d45c9f000)
        libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007f1d458e8000)
        libdouble-conversion.so.1 => /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.1 (0x00007f1d456d7000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1d454d3000)
        libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f1d451bc000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1d44e1e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f1d4785c000)
        libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007f1d43275000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f1d43003000)


Запуск:
./checkOnline
./checkOnline: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.14' not found (required by ./checkOnline)


Предполагаю, что можно взять с собой на вторую виртуалку недостающие либы, а какие ещё могут быть варианты?
  • Вопрос задан
  • 593 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
@Wexter
1) Либы вместе с бинарником
2) Сборка под версию из репозитория системы
3) Статическая сборка
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы