Когда мы распространяем приложения Qt в Linux (или в действительности любые приложения, использующие разделяемые библиотеки), мы отправляем дерево каталогов, которое содержит фактический исполняемый файл и связанный скрипт-оболочку вверху с подкаталогами, содержащими разделяемые библиотеки и любые другие необходимые ресурсы. что вы не хотите связывать.
Преимущество этого состоит в том, что вы можете настроить скрипт-обертку на все, что вам нужно для запуска приложения, не беспокоясь о том, чтобы пользователь устанавливал переменные среды, устанавливал в определенное место и т. Д. Если все сделано правильно, это также позволяет вам не беспокоиться о том, откуда вы вызываете приложение, потому что оно всегда может найти ресурсы.
На самом деле мы развиваем эту древовидную структуру еще дальше, помещая все исполняемые и разделяемые библиотеки в подкаталоги платформы / архитектуры, чтобы скрипт-обертка мог определять локальную архитектуру и вызывать соответствующий исполняемый файл для этой платформы и устанавливать переменные среды в найти соответствующие общие библиотеки. Мы обнаружили, что эта настройка особенно полезна при распространении для нескольких разных версий Linux, использующих общую файловую систему.
Несмотря на это, мы все же предпочитаем строить статически, когда это возможно, приложения Qt не являются исключением. Вы определенно можете строить с Qt статически, и вам не нужно создавать много дополнительных зависимостей, как отметил krbyrd в своем ответе.