Если есть недостаток в том, чтобы включать слишком много библиотек?
Вряд ли.
Если компилятор определяет, какие из них нужны, а остальные игнорирует?
Почти совершенно верно: это компоновщик , который проверяет каждую библиотеку и извлекает только необходимый ей объектный код.
Недостатком включения очень большого количества библиотек является то, что может быть трудно получить их в правильном порядке. В последних версиях компоновщика GNU есть несколько специальных опций, которые могут помочь с проблемой нестандартных библиотек (и это тоже время), но такие опции остаются непереносимыми. С другой стороны, если вы включите библиотеки, которые на самом деле не нужны, не имеет значения, в каком порядке они появляются, потому что компоновщик тщательно изучит каждую из них и решит, что ни одно из ее содержимого не нужно.
Для всех тех людей, которые ищут проекты, вот один, который я бы хотел иметь: дать мне инструмент, который берет список библиотек и выполняет топологическую сортировку по межбиблиотечным зависимостям, а затем сообщает мне порядок можно поместить их в командную строку, чтобы не было неопределенных символов.