如何为android-ndk8b(x86 arch android)构建i686 linux android gfortran?
我尝试使用build-gcc.sh构建i686 linux android gfortran,如下所示 (这是针对Androdk-7b的)但是我得到了关于link.h的错误。我从中添加了link.h,但它给出了更多错误 有人尝试过为x86 android启用i686 linux android gfortran吗?正如selalerer建议的那样。我没有尝试过这个,所以我以社区维基的形式发布,以供参考 Fortran for x86 Android ================= 本指南基于此,非常感谢Phil: 1) 下载并解包Android NDK'Android-NDK-r8c'(较旧的-r8b NDK由于缺少链接而无法工作。h!): wget 2) 在某处创建一个名为“toolchain src”的文件夹(例如,在android-ndk-r8c文件夹内), 将“cd”复制到此新文件夹 3) 确保已安装git('yum install git'或其他..)并下载 工具链来源:如何为android-ndk8b(x86 arch android)构建i686 linux android gfortran?,android,gcc,x86,fortran,Android,Gcc,X86,Fortran,我尝试使用build-gcc.sh构建i686 linux android gfortran,如下所示 (这是针对Androdk-7b的)但是我得到了关于link.h的错误。我从中添加了link.h,但它给出了更多错误 有人尝试过为x86 android启用i686 linux android gfortran吗?正如selalerer建议的那样。我没有尝试过这个,所以我以社区维基的形式发布,以供参考 Fortran for x86 Android ================= 本指南基于
git clone https://android.googlesource.com/toolchain/build.git
git clone https://android.googlesource.com/toolchain/gmp.git
git clone https://android.googlesource.com/toolchain/gdb.git
git clone https://android.googlesource.com/toolchain/mpc.git
git clone https://android.googlesource.com/toolchain/mpfr.git
git clone https://android.googlesource.com/toolchain/expat.git
4) 将文件夹“binutils”、“cd”创建到此目录,然后解压缩
比努蒂尔斯-2.23:
wget ftp.gnu.org/gnu/binutils/binutils-2.23.tar.gz
tar-xvzf-binutils-2.23.tar.gz
现在应该有一个文件夹工具链src/binutils/binutils-2.23
5) 更改为文件夹工具链src/build,编辑Makefile.in,更改行:
用GNU AS——GNU-LD——启用语言= C、C++
到
用GNU AS——GNU-LD——使能语言= C、C++、FORTRAN
6) 在文件android-ndk-r8c/build/tools/build-mingw64-toolchain.sh中,更改行:
var\u append GCC\u CONFIGURE\u OPTIONS”--启用语言=c,c++”
到
VARIAppApdioGccCuffuluxOpType“启用语言= C、C++、FORTRAN”< /P>
7) 在文件android-ndk-r8c/build/tools/build-gcc.sh中,更改行:
EXTRA_CONFIG_FLAGS=$EXTRA_CONFIG_FLAGS”--禁用libquadmath--禁用插件
到
EXTRA_CONFIG_FLAGS=$EXTRA_CONFIG_FLAGS”--禁用libquadmath--禁用libquadmath支持--禁用插件
8) 在文件android-ndk-r8c/build/tools/build-host-gcc.sh中,更改行:
ARGS=$ARGS”--启用语言=c,c++”
到
ARGs= $ARGS“——使能语言= C、C++、FORTRAN”
换线
ARGS=$ARGS--disable libquadmath--disable plugin--disable libitm--disable bootstrap“
到
ARGS=$ARGS”--禁用libquadmath--禁用libquadmath支持--禁用插件--禁用libitm--禁用引导”
9) 构建新的工具链:
/你的/path/to/android-ndk-r8c/build/tools/build-gcc.sh-j1--gmp版本=5.0.5--mpfr版本=2.4.2--mpc版本=0.8.1--binutils版本=2.23--gdb版本=7.3.x/your/path/to/toolchain src/your/path/to/android-ndk-r8c x86-4.7
(不要担心诸如“expr:warning:unportable BRE:”之类的消息)
10) 跪在屏风前,向上帝祈祷,这些东西
无数的配置脚本使用丑陋的shell语言执行无人需要的检查
这会让你的大脑从右到左出现凹痕,不知怎么的,它会设法
编译大量太小的文件(因此10%的时间都花在编译上)
90%是在启动GCC时),并且在与
tail-F/tmp/ndk YourUserName/build/toolchain/config.log
你的工具链将神奇地准备好。您可以在android-ndk-r8c/toolschains文件夹中找到它
11) 最后,将“cd”添加到文件夹中
“/your/path/to/android-ndk-r8c/toolschains/x86-4.7/prebuild/linux-x86/i686 linux-android”
并运行以下命令:
ln-s../libexec libexec
如果没有此命令,g++可能会引发错误消息
“g++:致命错误:-熔丝链接器插件,但未找到liblto_plugin.so”。
使用strace,我发现g++在错误的文件夹中查找,但是链接
上面让它找到liblto_plugin.so文件
下面是一些经验教训,让谷歌找到这个页面:
*)要加快编译速度,可以删除“-j1”。但只有在你得到
它只能工作一次,因为在多个CPU核上并行构建被报告给
造成额外的麻烦
*)出现错误消息“GCC\u NO\u可执行文件之后不允许进行链接测试”
x86链接失败时(适用于ARM)。原因是GCC不包括
正确的ANDROID\u开始文件\u规范和ANDROID\u结束文件\u规范来自
gcc-4.6.1/gcc/config/linux-android.h。GCC 4.6.1仅对ARM进行了规定,但未规定
但是,对于i386,GCC 4.8.0不支持。从谷歌下载的GCC也可以,
所以最好使用谷歌的GCC
*)错误消息“致命错误:link.h:没有这样的文件或目录”也会出现
谷歌的GCC,显然()
仅当启用其他语言(如objc或fortran)时。
错误线程如下所示:
MIPS在android-ndk-r8b/platforms/android-9/arch-MIPS/usr/include中有link.h
在android-ndk-r8c中,link.h现在也出现在android-9/arch-x86/usr/include/link.h中,
所以这个错误被修复了
*)错误消息“致命错误:quadmath_-weak.h:没有这样的文件或目录”:
最新的gcc-4.8也会出现这种情况,所以我们可以继续使用谷歌GCC4.7。
谷歌本身使用——禁用libquadmath,但我们还需要——禁用libquadmath支持
(见附件)。所以这需要加进去
android-ndk-r8c/build/tools/build-gcc.sh
和
android-ndk-r8c/build/tools/build-host-gcc.sh
*)错误消息“error:Pthreads是构建libatomic所必需的”
在构建从gnu.org下载的gcc-4.8的ARM版本时发生,
最好还是留在谷歌的GCC
*)android-ndk-r8c附带的GCC对我不起作用(关于
libstdc++.so.6太旧了),而android-ndk-r8b中的一个可以工作
没有问题。因为android ndk应该支持尽可能多的环境
尽可能地,我很高兴