У меня есть библиотека, состоящая из 300 файлов C ++.
Программа, которая использует библиотеку, не хочет динамически ссылаться на нее. (По разным причинам, но лучше всего то, что некоторые из поддерживаемых платформ не поддерживают динамическое связывание)
Затем я использую g ++ и ar для создания статической библиотеки (.a), этот файл содержит все символы всех этих файлов, включая символы, которые библиотека не хочет экспортировать.
Я подозреваю, что связывание программы-потребителя с этой библиотекой занимает слишком много времени, так как все файлы .o внутри .a по-прежнему нуждаются в разрешении своих ссылок, и у компоновщика есть больше символов для обработки.
При создании динамической библиотеки (.dylib / .so) вы можете использовать компоновщик, который может разрешать все символы внутри библиотеки и экспортировать только те, которые библиотека хочет экспортировать. Однако результат может быть «привязан» только к потребляющей программе во время выполнения.
Я бы хотел как-то получить преимущества динамического связывания, но использовать статическую библиотеку.
Если мои поиски в Google верны, думая, что это действительно невозможно, я бы хотел понять, почему это невозможно, так как кажется, что многие программы на c и c ++ могли бы извлечь выгоду.