Я предполагаю, что из вашего ответа вы разрабатываете для Linux.
Проблема, с которой вы сталкиваетесь, не зависит от системы здания ( cmake , qmake или другое).
Чтобы связать вашу программу с статической версией библиотеки, вам нужна эта библиотека на компьютере разработчика. В вашем случае у вас есть динамическая версия библиотеки (файл .so ), но у вас нет статическая версия (* 1017) * .a ). Следовательно, при попытке статической ссылки компоновщик ( ld ) говорит, что не может найти файл.
Для лицензирования выпусков двоичные файлы Qt с открытым исходным кодом распространяются только в виде динамических библиотек. Если вам нужно связать Qt статически, вы должны собрать его самостоятельно .
Я предлагаю вам прочитать официальную документацию здесь , если вы заинтересованы в этом.
Однако, вам может не нужно статически связываться, если ваша проблема заключается в том, чтобы просто получить исполняемый файл на целевой машине без установки дополнительных пакетов.
Вы можете развернуть свое приложение, копируя исполняемый файл и файлы .so, необходимые на целевой машине, так же, как если бы вы работали в Windows, скопируйте файл .exe вместе со всеми необходимыми файлами .dll, если вы работали в Windows.
Вы можете использовать команду ldd , чтобы получить список динамических библиотек, в которых нуждается ваш исполняемый файл.
Однако Linux работает по-другому, и нельзя просто скопировать файлы .so. Вы должны указать загрузчику путь к файлам .so. Это можно сделать, установив переменную окружения LD_LIBRARY_PATH . В Интернете вы найдете множество примеров того, как правильно установить эту переменную.
В качестве альтернативы вы можете также создать пакет snap , если это разрешено на вашей целевой машине.
Удачи в школьном проекте!