installing LibArchive inside android NDK toolchain

573 Views Asked by At

Hi I have a C++ library which uses LibArchive library and CMake. The top level CMake requires LibArchive 3.0 using find_package inside CMakeLists.txt:

find_package(LibArchive 3.0 REQUIRED)

I have installed LibArchive on my Ubuntu development machine:

$sudo apt install build-essential libarchive-dev

and can built the library for x86 architecture successfully.

However, when I am trying to build this library with Android NDK tool chain for arm64 so that I could use it as native library inside Android app using the following command, I get the error "LibArchive not found":

~/SampleLib/build $ cmake -DCMAKE_TOOLCHAIN_FILE=/home/username/Android/Sdk/ndk/21.4.7075529/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DAPPLICATION=android ..
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/username/Android/Sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at /home/username/.local/share/cmake-3.19/Modules/FindPackageHandleStandardArgs.cmake:218 (message):
  Could NOT find LibArchive (missing: LibArchive_LIBRARY
  LibArchive_INCLUDE_DIR) (Required is at least version "3.0")
Call Stack (most recent call first):
  /home/username/.local/share/cmake-3.19/Modules/FindPackageHandleStandardArgs.cmake:582 (_FPHSA_FAILURE_MESSAGE)
  /home/username/.local/share/cmake-3.19/Modules/FindLibArchive.cmake:60 (find_package_handle_standard_args)
  CMakeLists.txt:7 (find_package)

How can I install LibArchive inside Android NDK tool chain?

I thought maybe I need to git clone the libarchive and built it with NDK tool chain with hope that by adding the path, NDK tool chain cmake can find it but I get the build error:

~/libarchive (master) $ cmake -DCMAKE_TOOLCHAIN_FILE=/home/username/Android/Sdk/ndk/21.4.7075529/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a

~/libarchive (master) $ make
Scanning dependencies of target archive
[  0%] Building C object libarchive/CMakeFiles/archive.dir/archive_acl.c.o
In file included from /home/username/libarchive/libarchive/archive_acl.c:40:
In file included from /home/username/libarchive/libarchive/archive_acl_private.h:35:
In file included from /home/username/libarchive/libarchive/archive_string.h:49:
/home/username/libarchive/libarchive/archive.h:101:10: fatal error: 'android_lf.h' file not found
0

There are 0 best solutions below