Подписи RSA ... в проекте для Android и iPhone. Посмотрев вокруг, я выбрал cryptopp ...
Похожие (из вики Crypto ++): Android (командная строка) и iOS (командная строка) .
Существует ли более простой или более эффективный способ уменьшения размера библиотеки или криптопапа в частности?
Нет. Компилятор и libtool на iOS не имеют возможности определить, что вам может (а может и не понадобиться), поэтому вы получаете все в архиве. То же самое относится и к инструментам GNU на Android.
Я не совсем знаком с генерацией шаблонов во время компиляции. Но я помню, что шаблоны могут добавить довольно много кода. Есть ли способ остановить / улучшить это (параметры компилятора?)?
Не простой способ. Но вы можете пойти через исходный код и извлечь явные экземпляры шаблона. Вы хотите найти объекты, созданные с помощью CRYPTOPP_DLL_TEMPLATE_CLASS
. Вы можете увидеть, как это определено в config.h .
Но я не стал бы беспокоиться об этом, поскольку вы можете заставить компоновщик отбрасывать большую часть (или весь?) Неиспользуемый код из статической библиотеки.
Если я хочу вручную удалить все исходные / заголовочные файлы из проекта, которые не используются в моем простом сценарии использования, есть ли какие-нибудь инструменты, которые могут помочь?
Нет, я не знаю ни одного инструмента для этого (похож на Boost's bcp
). Я пробовал это в прошлом и разочаровался.
Что вы не спрашивали: как вы уменьшаете размер конечного двоичного файла при ссылке на статическую версию Crypto ++. Вот ответы:
Оба
IOS
Изменить GNUmakefile
CXXFLAGS += -gfull
LDFLAGS += -dead_strip
Android
CXXFLAGS += -Wl,--exclude-libs,ALL
запустить arm-linux-androideabi-strip
с --strip-debug
, --strip-unneeded
или --strip-all
в вашей окончательной библиотеке или исполняемом файле
Обе техники описаны на вики-страницах. Если вы работаете над Linux, есть еще одна вики-страница, посвященная уменьшению размера и удалению, в Crypto ++ Linux .
Для получения дополнительной информации см. Настройка производительности и отзывчивости (для iOS), arm-eabi-strip и двоичный размер и Удаление неиспользуемых функций / мертвого кода (для Android и Linux).