Что означает параметр линкера GCC -Wl,--no-as-needed?

Исходные данные. Есть (статическая) библиотека A, которая зависит от (статических) библиотек B и C, которые в свою очередь зависят от других библиотек. Граф зависимостей достаточно сложен, но циклических зависимостей в нем нет. Я решил написать тесты для библиотеки A, используя CMake и GTest. Сам тест - это исполняемый файл X, который линкуется с библиотеками A, B, C, и остальными.

Проблема заключается в том, что линкер сообщает мне: в библиотеке A присутствуют неопределенные символы. Эти символы находятся в библиотеке B. Порядок линковки, дублирование и обертывание списка библиотек при передаче линкеру в -Wl,--start-group/-Wl,--stop-group успеха не принесли.

Но проблему удалось решить при помощи параметра -Wl,--no-as-needed. Я пробовал искать информацию о том, как это работает, но окончательного понимания не достиг.

Может ли кто-нибудь объяснить мне, как работает -Wl,--no-as-needed? И я буду еще более признателен, если мне приведут пример ситуации, в которой этот параметр нужно использовать.


Ответы (0 шт):