Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ndk LAPACK构建期间未解决的SINCO_Android Ndk_Fortran_Lapack_Blas - Fatal编程技术网

Android ndk LAPACK构建期间未解决的SINCO

Android ndk LAPACK构建期间未解决的SINCO,android-ndk,fortran,lapack,blas,Android Ndk,Fortran,Lapack,Blas,按照说明,我构建了一个支持Fortran的NDK工具链(OSX,NDK-7b),目标是构建LAPACK/BLAS 将安卓cmake与3.4.0Netlib源代码一起使用,似乎我几乎成功了。但是,当链接其中一个测试时,BLAS构建失败(错误为未解析的sincos和sincosf)。稍微搜索一下就会发现这些功能在旧版Android中是不可用的。我想知道解决这些函数的最佳方法是什么 下面是链接错误的示例: cd/Users/marc/software/lapack-3.4.0/Android/BLAS

按照说明,我构建了一个支持Fortran的NDK工具链(OSX,NDK-7b),目标是构建LAPACK/BLAS

将安卓cmake与3.4.0Netlib源代码一起使用,似乎我几乎成功了。但是,当链接其中一个测试时,BLAS构建失败(错误为未解析的
sincos
sincosf
)。稍微搜索一下就会发现这些功能在旧版Android中是不可用的。我想知道解决这些函数的最佳方法是什么

下面是链接错误的示例:

cd/Users/marc/software/lapack-3.4.0/Android/BLAS/TESTING&/opt/local/bin/cmake-E cmake_link_script CMakeFiles/xblat2c.dir/link.txt--verbose=1 /opt/local/share/java/android ndk macosx/toolschains/arm-linux-androideabi-4.7.0/prebuild/darwin-x86/bin/arm-linux-androideabi-gfortran-Wl,--gc sections-Wl,-z,nocopyreloc-Wl,--fix-cortex-a8-Wl,--没有未定义的-lstdc++-lsupc++CMakeFiles/xblat2c.dir/cblat2.f.o-o.././bin/xblat2c-rdynamic-L/Users/marc/software/lapack-3.4.0/Android/systemlibs/armeabi-v7a-L/opt/local/share/java/Android-ndk-macosx/toolschains/arm-linux-androideabi-4.7.0/prebuild/darwin-x86/user/libs/libs/armeabi-v7a.././lib/lib/lib/libblas.a-lm-rpath,/Users/marc/software/lapack-3.4.0/Android/systemlibs/armeabi-v7a:/opt/local/share/java/Android-ndk-macosx/toolschains/arm-linux-androideabi-4.7.0/prebuild/darwin-x86/user/libs/armeabi-v7a /opt/local/share/java/android-ndk-macosx/toolschains/arm-linux-androideabi-

4.7.0/prebuild/darwin-x86/lib/gcc/arm-linux-androideabi/4.7.0/../../../../../../arm-linux-androideabi/lib/libgfortran.a(c99_functions.o):在函数
cexpf':
/opt/local/share/java/android-ndk-macosx/src/build/。/gcc/gcc-4.7.0/libgfortran/intrinsics/c99_-functions.c:910:未定义对
sincosf'的引用


GCC需要在编译时知道
sincos
是否可用。它是基于目标的。对于目标三元组
arm-linux-androideabi
,它查看
gcc/config/linux.h
,发现:

/* Whether we have sincos that follows the GNU extension.  */
#undef TARGET_HAS_SINCOS
#define TARGET_HAS_SINCOS (OPTION_GLIBC || OPTION_BIONIC)
加入Bionic的原因是Android 2.3增加了对sincosf的支持。因此,您可以更新Bionic或修补GCC以假设没有可用的
sincos
;参考文献[2]

[1]


[2]

您能稍微格式化一下链接错误吗,还是应该是一条长线?谢谢。所以,我的工具链是用OPTION_BIONIC构建的,因此认为sincos是可用的?但是libm来自于安卓2.3之前的版本,所以它真的不可用吗?