У меня есть исполняемый файл, который связан с общей библиотекой "A", которая, в свою очередь, использует общую библиотеку "B" (GUI, написанную в Qt). Когда я компилирую исполняемый файл, компоновщик ищет все библиотеки, включая "B", и все библиотеки, в которых он нуждается (библиотеки Qt). Как я могу отключить библиотеку "B" от исполняемого файла таким образом, что ему не понадобится "B" в времени ссылки. Мне бы хотелось, чтобы исполняемый файл не знал о библиотеке "B".
Предполагая, что вы можете построить зависимость "B" от источника, вы можете скрыть ее от своего исполняемого файла, привязав "A" к "B".
В случае невозможности компиляции "B" из источника, можно ограничить видимость символов в "B", которые явно не используются. Вы можете выполнить это через команду "ld" в Unix-системах. Я об этом мало знаю. Этот пост может предложить некоторые предложения. Однако они кажутся мне очень ясными и ручными, поэтому, вероятно, менее применимы, если "B" - большая библиотека со многими символами. Я подозреваю, что на самом деле ты не идешь.
Вы хотите, чтобы "B" не отображался при вызове команды "ldd" в вашем исполняемом файле. Это правильно?
Или вы только пытаетесь упростить установку вашего исполняемого файла для пользователей? Если да, вы все равно можете автоматизировать установку в некоторой степени.