Допустим, есть некая библиотека, использующая внутри себя патченный libcrypto. Если бы речь шла о динамической библиотеке, все просто: компилируем libcrypto с PIC, линкуемся с шаренной библиотекой, скрывая ненужные символы через linker script. А если такой же трюк требует провернуть для статической библиотеки?
Пример для наглядности: берем SHA1_Init(SHA_CTX *c)
, добавляем ей какой-нибудь параметр int SHA1_Init(SHA_CTX *c, int param)
, собираем libcrypto.a ну и свою libyoba.a. Далее, если положить все (или только нужные) объектные файлы или libcrypto.a в libyoba.a, то при линковке с yoba с приложением, использующим SHA1_Init, в зависимости от порядка -lyoba -lcrypto, все результирущее приложение получит либо патченный SHA1_Init, либо его оригинальную версию. А хотелось бы, чтобы патченный SHA1_Init оставался исключительно внутри libyoba.a.
Понимаю, что это решается банальным переименованием, но уж больно много всего переименовывать в libcrypto придется.