use*_*448 5 c++ windows android android-ndk
我用C++编写了一个国际象棋引擎,我想编译它来运行应用程序"Chess for Android".
以下摘自该应用作者的帖子,该帖子非常粗略地描述了如何在他的应用上运行第三方国际象棋引擎:
最后,开发人员可以使用适当的编译器工具链(例如ARM的CodeSourcery或NDK附带的工具链)在C/C++中进行所有开发并生成独立的本机代码.第三种方法由Chess for Android用于导入未随应用程序提供的引擎.
国际象棋引擎是一个简单的程序.应用程序运行,用户发送命令,程序认为,并将回吐一个字符串,其中包含最佳移动的详细信息.
我不需要带有图形或其他任何东西的应用程序.它只是一个与via stdin/stdout进行通信的过程(真的通过管道)."Chess for Android"应用程序负责与流程进行交流,我只需要弄清楚如何让我的引擎成为可以由"Chess for Android"应用程序运行的流程.
我认为关键声明可以在此页面上找到:UCI and XBoard Engines for Android
对于基于 x86 的 Android 设备(例如 Google TV),任何为 32 位 x86 Linux 编译的引擎二进制文件都可以工作。这种格式广泛适用于许多国际象棋引擎。
这意味着 Android 版 Chess 可以使用引擎,就像它们是为 Linux 编译的一样。这并不奇怪,因为 Android 基于 Linux 并且具有可用的本机 Linux API。Chess for Android 使用这些 API 将引擎作为普通的 Linux 本机可执行文件来运行。
因此,如果您有 32 位 Linux x86 系统,并且您的 Android 设备是 x86 设备,只需在 Linux 系统上编译您的引擎,就好像您在本地使用它一样,然后根据您链接的页面上的说明将其安装在您的设备上。
但是,您的 Android 设备可能不是 x86 设备,它可能是 ARM 设备。在这种情况下,您需要在计算机上运行一个交叉编译器,可以将其编译为针对 ARM 的 Linux 可执行文件(这在您引用的部分中进行了简要描述)。交叉编译器将以与本机编译器相同的方式编译代码,但生成的可执行文件将具有 ARM 芯片的机器指令,而不是计算机中的 x86 芯片。
由于您(大概)在 Windows 上进行开发,因此使用 Android NDK 交叉编译器可能是最方便的。根据其说明安装它(请注意,实际使用 NDK 的大多数说明与您无关,因为您不是为 Android 应用程序创建本机库,而是创建普通的 Linux 可执行文件)
NDK 包含 gcc 交叉编译器工具链。您将使用它来构建您的本机 .exe。确保您的 PATH 包含 NDK 中包含 gcc 编译器前端的文件夹。然后,如果您的引擎源代码位于名为 engine.cc 的文件中,您应该能够使用如下命令将其编译为 ARM 二进制文件
gcc -o MyUCIEngine engine.cc
Run Code Online (Sandbox Code Playgroud)
您可能需要设置更多环境变量,并且执行构建的实际命令会更复杂。 此页面包含在 NDK 中运行交叉编译工具链所需的附加信息。
| 归档时间: |
|
| 查看次数: |
2604 次 |
| 最近记录: |