首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake - libtiff交叉编译

CMake - libtiff交叉编译
EN

Stack Overflow用户
提问于 2020-07-06 08:54:46
回答 1查看 410关注 0票数 0

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

我下载了利布蒂夫的源代码,并试图编译它们以在不同的体系结构中生成libtiff.so

  • 臂64-v8a
  • armeabi-v7a
  • x86
  • x86_64

但我成功地生成了一个libtiff.dylib.

在之前的4种体系结构中,如何生成.so而不是.dylib

以下是我的命令行:

代码语言:javascript
复制
> cd libtiff
> mkdir install
> cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install --enable-shared .
> make
> make install

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-07 07:33:29

我找到了一种将这个库与Android工具交叉编译的方法。

下面是要生成的命令行,例如arm64-v8a版本。

代码语言:javascript
复制
> [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

或者,单行版本

代码语言:javascript
复制
> [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

详情如下:

  • /Library/Android/sdk/cmake/3.6.4111459/bin是cmake: CMAKE_BIN_PATH的路径
  • /Library/Android/sdk/ndk-bundle是NDK: NDK_PATH的路径
  • CMAKE_INSTALL_PREFIX是指定安装dir的标志。在我的例子中,我决定在libtiff dir中创建安装dir
  • CMAKE_TOOLCHAIN_FILE:如果要指定要使用的工具链的标志。在NDK dir中使用Android工具链文件,而不是在cmake中使用
  • CMAKE_MAKE_PROGRAM是一个标志,用于指定位于cmake中的忍者的路径。
  • -G是指定的构建系统生成器,这里是忍者。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62752494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档