Android noob在这里。我正在尝试创建一个运行本机代码的基于OpenGL ES的Android应用,并且正在使用CMake进行构建。
现在,我有一个C ++库,需要针对Android NDK代码包括,导入和链接(.a文件)。我知道该库需要针对Android进行交叉编译,但是如果我仅构建Linux二进制文件(.a文件)并将其链接,它将可以工作吗?
此外,C ++库是使用Windows平台和CMake构建的,后者会生成.lib(Windows的静态lib版本)。从Windows平台(Windows的Linux的静态lib版本)生成.a文件的最佳方法是什么?
现在,我有一个C ++库,需要针对Android NDK代码包括,导入和链接(.a文件)。我知道该库需要针对Android进行交叉编译,但是如果我仅构建Linux二进制文件(.a文件)并将其链接,它将可以工作吗?
不会。这是因为它们只是属于不同的平台。它们都使用相同的格式(.a
),但这并不意味着它们兼容。例如,他们使用不同的标准库。因此,您必须针对Android对其进行交叉编译。
此外,C ++库是使用Windows平台和CMake构建的,后者会生成.lib(Windows的静态lib版本)。从Windows平台(Windows的Linux的静态lib版本)生成.a文件的最佳方法是什么?
由于您的C ++库使用CMake,并且Android NDK正式支持CMake构建,所以这并不难。
对于Windows,您可以download Android NDK。然后尝试CMake guide。基本上,您应该做的是将工具链文件作为CMake参数以及一些参数(如ABI,API级别等)传递。因此,您可能不需要编辑CMake文件。