CMake-libtiff交叉编译

时间:2020-07-06 08:54:46

标签: cmake android-ndk shared-libraries libtiff

对于我的Android应用程序,我想移植需要libtiff的C ++代码。

我已经下载了libtiff的源,并尝试将其编译为不同架构的libtiff.so

  • arm64-v8a
  • armeabi-v7a
  • x86
  • x86_64

但是我成功完成的只是生成一个libtiff.dylib ...

在以前的4种体系结构中,我可以怎么生成 .so而不是.dylib

这是我的命令行:

> cd libtiff
> mkdir install
> cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install --enable-shared .
> make
> make install

注意:我在Mac上,并且不是我最喜欢的编译主题^^

1 个答案:

答案 0 :(得分:0)

我找到了一种使用Android工具交叉编译该库的方法。

以下是用于生成例如arm64-v8a版本的命令行

> [CMAKE_BIN_PATH]/cmake -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_PLATFORM=android-21 -DANDROID_NDK=[NDK_PATH] -DCMAKE_INSTALL_PREFIX=install -DCMAKE_TOOLCHAIN_FILE=[NDK_PATH]/build/cmake/android.toolchain.cmake  -DCMAKE_MAKE_PROGRAM=[CMAKE_BIN_PATH]/ninja -G Ninja
> [CMAKE_BIN_PATH]/ninja
> [CMAKE_BIN_PATH]/ninja install

或单行版本

> [CMAKE_BIN_PATH]/cmake -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_PLATFORM=android-21 -DANDROID_NDK=[NDK_PATH] -DCMAKE_INSTALL_PREFIX=install -DCMAKE_TOOLCHAIN_FILE=[NDK_PATH]/build/cmake/android.toolchain.cmake  -DCMAKE_MAKE_PROGRAM=[CMAKE_BIN_PATH]/ninja -G Ninja && [CMAKE_BIN_PATH]/ninja && [CMAKE_BIN_PATH]/ninja install

详细信息:

  • [CMAKE_BIN_PATH]是 cmake 的路径: /Library/Android/sdk/cmake/3.6.4111459/bin
  • [NDK_PATH]是NDK的路径: / Library / Android / sdk / ndk-bundle
  • CMAKE_INSTALL_PREFIX是用于指定安装目录的标志。就我而言,我决定在 libtiff 目录
  • 中创建 install 目录
  • CMAKE_TOOLCHAIN_FILE:如果用于指定要使用的工具链的标志。在NDK目录内而不是在cmake目录内使用Android工具链文件
  • CMAKE_MAKE_PROGRAM是一个标志,用于指定cmake目录中的 ninja 的路径
  • -G 是在此处指定构建系统生成器的Ninja