我正在 CentOS 上使用通过运行 Android NDK 中的 make-standalone-toolchain.sh 脚本生成的交叉编译工具链和来自下载的 Android NDK 工具链源的 gcc 源文件为 CentOS 上的 Android 构建 gcc。 GMP 源是通过运行位于 gcc/contrib 文件夹中的 download_prerequisites 脚本获得的。
我指定了--build=x86_64-linux 和--host=arm-linux-eabi,交叉编译工具在env 变量中设置,并在运行configure 时指定。我运行了 ../gcc-4.7/configure,然后运行 -d。使用/bin/sh 构建 gmp 时 Make 失败。 ./gen-fac_ui.无法执行二进制。
具体命令为:./gen-fac_ui $(BITS_PER_MP_LIMB) $(GMP_NAIL_BITS) >mpz/fac_ui.h || (rm -f mpz/fac_ui.h; 退出 1)
我猜执行失败是因为我正在使用交叉编译工具,而 gen-fac_ui 二进制文件无法在 CentOS 上运行。我的问题是:是否有另一种方法来生成 mpz/fac_ui.h 作为解决方法?
我也试过运行 make -d -i,它成功完成但似乎跳过了构建关键文件...比如 gcc 或 g++
最佳答案
简答:
我需要本地(即 CentOS)GCC 工具来构建和运行 gen-fac_ui。
长答案: This是我在 OSDev 论坛上的帖子,我基本上问了同样的问题并得到了答案。它还包含我没有安装 glibc-devel 的错误(和更正) 原生 GCC 工具链。
此外,由于我的构建系统的 GCC 基础版本是 4.4.7,而我试图跨原生构建 4.7,我必须获得可以通过 yum 安装的开发人员工具集。有关工具集的信息是 here和简易安装说明是 here
FWIW,我仍然不完全确定我应该如何确定 gen-fac_ui 需要由构建机器的本地 gcc 制作...除了我找不到其他方法来生成 fac_ui .h 和其他 header 。
关于android - 从 Android NDK 在 gcc 中交叉编译 gmp,无法执行 ./gen-fac_ui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19183512/