Извините за запутанную формулировку.Как создать статическую библиотеку, связанную с другой библиотекой, и ее можно использовать третьей программой, которая связывает обе библиотеки?
В принципе, я хочу создать статическую библиотеку (libone.a
), которая должна связывать другую статическую библиотеку (libtwo.a
). libone.a
иlibtwo.a
оба связаны статически в другую программу (назовем его program
), выполнив следующие действия:
$(CC) -o program something.o anotherthing.o -L/path/to/lib -lone -ltwo
Когда program
делает вызов метода в libtwo.a
он должен идти к libtwo.a
загружаемой с program
. Но всякий раз, когда program
делает вызов метода в libone.a
, который вызывает метод в libtwo.a
, он должен вызвать libtwo.a
, который был встроен, когда было создано libone.a
. Да, я понимаю, что это взорвет размер файла, загрузив две из тех же библиотек, но я в порядке с этим.
Причина, по которой я пытаюсь это сделать, потому что у меня есть program
, который использует OpenSSL (в данном случае libcrypto.a
), а моя статическая библиотека также использует libcrypto
. Однако у меня есть требование в моей библиотеке, что OpenSSL является FIPS действительным (то есть FIPS_mode_set(1)
), но при этом произойдет разрыв program
. Короче говоря, я хочу использовать библиотеки OpenSSL. Тот, который вызван program
изначально должен использовать свой собственный, и тот, который вызвал моя библиотека, должен использовать тот, который я связал, и является FIPS действительным.
Возможно ли это?