Будет Dropbox ( http://www.getdropbox.com/ ) делает то, что Вы хотите?
Вы можете переименовать весь экспортированный символ из minizip
с помощью objcopy.
что-то вроде
objcopy -redefine-sym=minizip.syms yourstaticlibray.a
и minizip.syms
_unzOpen _yourownprefix_unzOpen
_unzOpen2 _yourownprefix_unzOpen2
... ...
Нет конфликтов, если исполняемый файл связан с другим minizip.a
и yourstaticlibray.a
, и поскольку вы переименовали все символы в yourstaticlibray.a
, ваш вызов внутри yourstaticlibray. a
- minizip
будет использовать префиксный символ, а не unzOpen.
Поскольку статическая библиотека - это не что иное, как набор файлов .o (которые, как вы упомянули, еще не связаны), единственный способ полностью скрыть присутствие minizip от внешнего мира - это чтобы каким-то образом скомпилировать minizip и вашу библиотеку вместе как единый блок компиляции и сделать функции / переменные minizip статическими.
Вы можете посмотреть, как SQLite выполняет процесс "объединения", который превращает исходный код библиотеки в один файл .c для дальнейшая компиляция: Объединение SQLite .
В качестве бонуса вы получите лучшую оптимизацию (действительно недавние GCC и Binutils могут выполнять оптимизацию времени компоновки, но эта функция еще не выпущена).