为armandroid交叉编译GCC。在GMP中构建失败

为armandroid交叉编译GCC。在GMP中构建失败,android,gcc,android-ndk,cross-compiling,Android,Gcc,Android Ndk,Cross Compiling,在这件事上我已经穷途末路了 我是Android开发新手。我已经阅读了GCC安装文档和嵌入式Android的部分内容。我正在尝试使用make-standalone-toolchain.sh脚本构建的Android NDK工具链交叉编译GCC4.7。我正在使用NDK工具链源中的gcc和binutils源文件 我将gcc-4.7和binutils-2.23复制到一个目录gcc-src中,并在两者旁边创建了一个“build”目录,如下所示: gcc-src/gcc-4.7 gcc-src

在这件事上我已经穷途末路了

我是Android开发新手。我已经阅读了GCC安装文档和嵌入式Android的部分内容。我正在尝试使用make-standalone-toolchain.sh脚本构建的Android NDK工具链交叉编译GCC4.7。我正在使用NDK工具链源中的gcc和binutils源文件

我将gcc-4.7和binutils-2.23复制到一个目录gcc-src中,并在两者旁边创建了一个“build”目录,如下所示:

    gcc-src/gcc-4.7
    gcc-src/binutils-2.23
    gcc-src/build
我已将源代码符号链接到 bfd, 气体, gprof, 劳工处, gprof 操作码 从binutils到gcc-4.7源目录。我还运行了contrib/中的脚本,该脚本下载了 gmp, mpfr mpc 并创建相应的符号链接

我已使用(最新)以下选项运行配置:

    sh ../gcc-4.7/configure --prefix=/usr/arm --disable-option-checking --host=arm-linux-eabi 
    --target=arm-linux-eabi --with-sysroot=/usr/sysroot --with-build-sysroot=/usr/sysroot --with-build-time-tools=/usr/bin --program-prefix=arm- 
    --disable-multilib --with-cpu=arm7 --enable-languages=c,c++,lto --disable-werror --disable-nls CC=arm-linux-androideabi-gcc GCC=arm-linux-androideabi-gcc 
    CFLAGS='-Wall -g -mfloat-abi=softfp -mbionic -mandroid -Wl,-lsupc++ -Wl,-lgnustl_shared' 
    CPPFLAGS='-Wall -g -mbionic -mandroid' LDFLAGS='-Wl,-lsupc++ -Wl,-lgnustl_shared' CXX=arm-linux-androideabi-g++ 
    LD=arm-linux-androideabi-ld STRIP=arm-linux-androideabi-strip OBJDUMP=arm-linux-androideabi-objdump READELF=arm-linux-androideabi-readelf  
    AS=arm-linux-androideabi-as NM=arm-linux-androideabi-nm 
    LIBS='-lc -ldl -lm' CC_FOR_TARGET=arm-linux-androideabi-gcc CPP_FOR_TARGET=arm-linux-androideabi-gcc CXX_FOR_TARGET=arm-linux-androideabi-g++ 
    GCC_FOR_TARGET=arm-linux-androideabi-gcc RANLIB_FOR_TARGET=arm-linux-androideabi-gcc-ranlib LD_FOR_TARGET=arm-linux-androideabi-ld 
    AS_FOR_TARGET=arm-linux-androideabi-as NM_FOR_TARGET=arm-linux-androideabi-gcc-nm AR_FOR_TARGET=arm-linux-androideabi-gcc-ar 
    READELF_FOR_TARGET=arm-linux-androideabi-readelf 
    OBJDUMP_FOR_TARGET=arm-linux-androideabi-objdump STRIP_FOR_TARGET=arm-linux-androideabi-strip 
    host_configargs=--with-headers=/usr/sysroot/usr/include target_configargs=/usr/sysroot/usr/include
当我运行make-d…或make-d all host…时,当它试图编译gen-fac_ui.c时,它总是失败,因为它找不到includes stdio.h、stdint.h或string.h

明天重新设置构建目录并重新开始之后,我将添加确切的错误,但我想在我昏倒之前发布详细信息和问题

非常感谢您的帮助。我在这件事上不知所措

快速提示:我注意到binutils src目录包含一个include/文件夹…我将尝试将其符号链接到gcc src目录,然后运行“make distclean”,然后“../gcc-4.7/configure&&make”

更新:符号链接包括/未修复该问题。这是我不断发现的错误

    make[2]: Entering directory `/project/android/tc-src/gcc/gcc-src/build/gmp'
    gcc `test -f 'gen-fac_ui.c' || echo '../../gcc-4.7/gmp/'`gen-fac_ui.c -o gen-fac_ui
    Putting child 0x007ddd30 (gen-fac_ui) PID 25531 on the chain.
    Live child 0x007ddd30 (gen-fac_ui) PID 25531 
    ../../gcc-4.7/gmp/gen-fac_ui.c:20:19: error: stdio.h: No such file or directory
    ../../gcc-4.7/gmp/gen-fac_ui.c:21:20: error: stdlib.h: No such file or directory
    In file included from ../../gcc-4.7/gmp/gen-fac_ui.c:23:
    ../../gcc-4.7/gmp/dumbmp.c:42:20: error: string.h: No such file or directory
    In file included from ../../gcc-4.7/gmp/gen-fac_ui.c:23:

我通过执行以下操作成功编译了gen-fac_ui:

  • 卸载build gcc(我认为)是不需要的,因为我正在使用Android NDK中make-standalone-toolchain.sh脚本生成的交叉编译器工具链
  • 配置适当的变量以将交叉编译器工具设置为生成工具

  • 我现在有一个不同的问题,我将在另一个问题中发布。基本上,gen-fac_ui编译时,它(当然)不会运行。

    您是为arm交叉编译gcc还是交叉编译本机gcc?要交叉编译gcc,您还有3个依赖项,即GMP MPFR和MPCNO,它们并不完全确定这意味着什么……我使用--build=build--host=arm linux eabi和--target=arm linuxeabi。我已将GMP MPFR和MPC的源代码下载到gcc-4.7源代码目录中,以便使用gcc build
    --host=arm linux eabi和--target=arm linuxeabi
    编译它们。这意味着您试图跨本机,生成的二进制文件将在arm板中执行。你能分享你的配置细节吗?包括在原始帖子中。