Кажется, поддержка Botan для сборки Android бинарных файлов на Windows хостах ограничена. Вам придется использовать dark magi c, чтобы сделать эту работу.
Процесс сборки состоит из двух фаз, фазы конфигурации и фазы сборки.
Android -specifi c инструкции в связанной с вами документации не охватывают весь процесс сборки, а только этап настройки. На этапе изготовления вам необходимо следовать инструкциям Windows -specifi c ( ссылка ).
Этап настройки:
Вам потребуется следующее двоичные файлы, настройте пути к вашей машине:
clang ++ (обратите внимание на .cmd
в конце): C:\Development\android-ndk-r19c-windows-x86_64\android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\bin\armv7a-linux-androideabi28-clang++.cmd
ar: C:\Development\android-ndk-r19c-windows-x86_64\android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ar.exe
В папке Botan введите команду configure
:
python.exe .\configure.py --cc-bin=C:\Development\android-ndk-r19c-windows-x86_64\android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\bin\armv7a-linux-androideabi28-clang++.cmd --ar-command=C:\Development\android-ndk-r19c-windows-x86_64\android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ar.exe --os=android --cpu=armv7 --verbose
Выполните этап
На этапе настройки создается Makefile
в папке Botan. Вам нужно будет внести некоторые коррективы в этот файл:
В строке all: libs cli tests docs
удалить docs
Причина: для создания файлов документации необходимы дополнительные инструменты , Если вам действительно нужна документация, вы также можете попробовать установить эти инструменты, но я не проверял это.
Замените вхождения ln -fs
на copy
.
Причина: Linux ln -fs
создаст символьную ссылку c из второго файла в списке параметров на первый. Эта команда недоступна, поэтому изменение ее на копирование первого файла во второй мне кажется прагматическим обходным путем c. Вы также можете изменить ее на соответствующую команду для создания ссылки на Windows, но тогда вам, возможно, придется настроить ее снова при развертывании на целевую Android.
В строки, начинающиеся с LIBOBJS =
, CLIOBJS =
и TESTOBJS =
, заменяют все вхождения \
на /
. Во всем файле замените вхождения .\
на ./
. Причина: использование разделителя пути Windows в стиле \
в некоторых местах вызывает проблемы.
Найдите блок с помощью # Executable targets
и # Library targets
. Вставьте @<< ... <<
вокруг списков параметров (так называемый встроенный файл nmake, основанный на этом ответе), чтобы он выглядел следующим образом:
# Executable targets
$(CLI): $(LIBRARIES) $(CLIOBJS)
$(EXE_LINK_CMD) @<<
$(ABI_FLAGS) $(CLIOBJS) $(EXE_LINKS_TO) $(LDFLAGS) -o $@
<<
$(TEST): $(LIBRARIES) $(TESTOBJS)
$(EXE_LINK_CMD) @<<
$(ABI_FLAGS) $(TESTOBJS) $(EXE_LINKS_TO) $(LDFLAGS) -o $@
<<
# Library targets
./libbotan-2.a: $(LIBOBJS)
$(AR) @<<
$(AR_OPTIONS) $@ $(LIBOBJS)
<<
./libbotan-2.so.13: $(LIBOBJS)
$(CXX) @<<
-shared -fPIC -Wl,-soname,libbotan-2.so.13 $(ABI_FLAGS) $(LDFLAGS) $(LIBOBJS) $(LIB_LINKS_TO) -o $@
<<
Причина: без этого изменения я получил ошибку о слишком длинном списке параметров.
Вам понадобится nmake (часть Visual Studio). На моей машине он установлен в C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\nmake.exe
В папке Botan запустите nmake.exe
. После этого ваша папка Botan должна содержать двоичные файлы botan
, botan-test
и библиотеки libbotan-2...
.