Всем Здрасте,
Есть задача: прилинковать С++ библиотеку без лишних зависимостей, то есть:
Есть библиотека lib1 эта библитека зависит от библиотеки lib2.
Есть проект proj1 и proj2.
Они оба зависят от и используют lib1
Но proj1 использует функционал lib2 соответственно зависимость от этой библиотеки ему нужна.
А proj2 не использует функционал lib2 соответственно зависимость от этой библиотеки ему не нужна
Как прилинковать lib1 в proj2 и исключить зависимости от lib2?
Ответ
Библиотека - это просто архив объектных файлов. В "традиционном" режиме линковка библиотек делается с точностью до индивидуальных объектных файлов. Если при линковке lib1 в proj2 удастся аккуратно "выхватить" из lib1 только те объектные файлы, которые не ссылаются на символы из lib2, то линковать lib2 в proj2 не понадобится вообще. Задача решена. Для этого обычно нужно, чтобы объектные файлы в lib1 были продуманно/аккуратно организованы и довольно тонко гранулированы.
Если же какие-то символы из lib2 все таки притянутся в proj2, то ничего не поделаешь: придется либо линковать lib2 в proj2, либо писать "заглушки" для этих символов.
Комментариев нет:
Отправить комментарий