Z tego przewodnika dowiesz się, jak skonfigurować i skompilować środowisko wykonawcze LiteRT za pomocą CMake w systemie macOS. Instrukcje obejmują zarówno kompilację krzyżową na Androida (przy użyciu systemów macOS i Linux jako maszyn hosta), jak i kompilację natywną na macOS i Linux.
Typowe etapy kompilacji
Zainstaluj CMake 4.0.1 z tej strony: https://github.com/kitware/cmake/releases
Wszystkie gotowe ustawienia kompilacji wymagają pracy w katalogu głównym repozytorium:
cd ./litert
Wygenerowane drzewa kompilacji znajdują się w cmake_build*. Równoległe kompilacje można kontrolować za pomocą -j, podając żądaną liczbę rdzeni.
Dostępne wersje kompilacji
LiteRT obsługuje zarówno wersje Release, jak i Debug:
| Gotowe ustawienia | Platforma | Typ kompilacji | Katalog wyjściowy |
|---|---|---|---|
default |
Komputer (macOS/Linux) | Wersja | cmake_build |
default-debug |
Komputer (macOS/Linux) | Debugowanie | cmake_build_debug |
android-arm64 |
Android arm64 | Wersja | cmake_build_android_arm64 |
android-arm64-debug |
Android arm64 | Debugowanie | cmake_build_android_arm64_debug |
Wersje Release używają -O3 -DNDEBUG do optymalizacji plików binarnych wersji produkcyjnej.
Wersje debugowania używają -O0 -g do debugowania z pełnymi informacjami o symbolach.
Kompilacja skrośna na Androida (arm64)
Zainstaluj NDK na Androida i wyeksportuj ścieżkę, aby CMake mógł ją znaleźć:
export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27Konfigurowanie narzędzi flatbuffer po stronie hosta
cmake --preset android-arm64;Skonfiguruj kompilację LiteRT na Androida, korzystając z podanego ustawienia wstępnego, i wskaż wygenerowane narzędzia FlatBuffers:
# For Release build: cmake --preset android-arm64 \ -DTFLITE_HOST_TOOLS_DIR="$(cd ../host_flatc_build/_deps/flatbuffers-build && pwd)" # For Debug build: cmake --preset android-arm64-debug \ -DTFLITE_HOST_TOOLS_DIR="$(cd ../host_flatc_build/_deps/flatbuffers-build && pwd)"Skompiluj LiteRT na Androida:
# For Release build: cmake --build cmake_build_android_arm64 -j # For Debug build: cmake --build cmake_build_android_arm64_debug -j
Artefakty, takie jak biblioteki statyczne, będą emitowane w odpowiednim katalogu kompilacji (cmake_build_android_arm64 lub cmake_build_android_arm64_debug).
Kompilacja na komputery z systemem macOS i Linux
Skonfiguruj domyślne gotowe ustawienia kompilacji na komputery:
# For Release build: cmake --preset default # For Debug build: cmake --preset default-debugKompilowanie LiteRT:
# For Release build: cmake --build cmake_build -j # For Debug build: cmake --build cmake_build_debug -j
Dostosowywanie celu kompilacji
Dostosowywanie kompilacji CMake
Użyj opcji CMake, aby określić, które łańcuchy narzędzi i funkcje mają być kompilowane w Twoich elementach docelowych. np.:
cmake -S . -B build-release \
-DCMAKE_BUILD_TYPE=Release \
-DLITERT_AUTO_BUILD_TFLITE=ON \
-DLITERT_ENABLE_GPU=OFF \
-DLITERT_ENABLE_NPU=OFF \
-DLITERT_DISABLE_KLEIDIAI=ON \
-DLITERT_HOST_C_COMPILER=/usr/bin/clang \
-DLITERT_HOST_CXX_COMPILER=/usr/bin/clang++
cmake --build build-release --target dispatch_api_Qualcomm_so -j8
LITERT_HOST_C_COMPILER/LITERT_HOST_CXX_COMPILERumożliwiają wskazanie narzędzi pomocniczych narzędzi hosta w dowolnej instalacji Clang/GCC bez edytowaniaCMakeLists.txt.LITERT_DISABLE_KLEIDIAIzapewnia powtarzalność kompilacji na komputery stacjonarne z architekturą x86, pomijając KleidiAI. Ustaw wartośćOFF, jeśli chcesz dołączyć delegata.- Gdy potrzebujesz zoptymalizowanego artefaktu, zawsze przekazuj wartość
-DCMAKE_BUILD_TYPE=Release(lub odpowiednie ustawienie wstępne). Dzięki temu CMake będzie używać-O3 -DNDEBUG.
Tworzenie bibliotek dostawców o minimalnym rozmiarze
Podczas łączenia włącz usuwanie martwych kodów, aby biblioteki wysyłkowe miały rozmiar zgodny z rozmiarem Bazela:
- macOS: dodaj
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs"(i analogicznieCMAKE_EXE_LINKER_FLAGS_RELEASE, jeśli chcesz usunąć pliki wykonywalne). Po skompilowaniu uruchomstrip -x path/to/libLiteRtDispatch_Qualcomm.dylib. - Linux: dodaj
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections"i uruchomstrip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so(lub ustaw jako poleceniePOST_BUILD).
Te flagi mogą znajdować się bezpośrednio w cmake --preset … wpisach w CMakePresets.json, dzięki czemu każdy deweloper w Twoim zespole będzie miał taką samą konfigurację.
Wskazówki dotyczące rozwiązywania problemów
- Jeśli zmienisz łańcuchy narzędzi lub główne opcje konfiguracji, usuń odpowiedni katalog
cmake_build*, a następnie ponownie uruchom krok konfiguracji. - Sprawdź
CMakeCache.txtw każdym drzewie kompilacji, aby znaleźć rozwiązane ścieżki zależności.