【发布时间】:2020-07-06 08:54:46
【问题描述】:
对于我的 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 上,编译的东西不是我最喜欢的主题^^
【问题讨论】:
-
MacOS 的主机编译器为 MacOS 创建二进制文件(例如,库具有
.dylib扩展名)。要为其他架构生成二进制文件,您需要执行交叉编译。找到并安装一个交叉编译器,为它找到CMake toolchain(或手动编写工具链)并使用此工具链和-D选项为cmake。 -
哦,好的。对交叉编译器有什么建议吗?
-
只需谷歌即可。例如。 “macos 交叉编译 x86 cmake”。
-
@Tsyvarev,我找到了使用 cmake & ninja 的解决方案,但我无法发布我的答案
-
您的解决方案与 Android SDK 的常见交叉编译有显着不同吗?例如。就像那个问题一样:stackoverflow.com/questions/53385391/….
标签: cmake android-ndk shared-libraries libtiff