Android ndk LAPACK构建期间未解决的SINCO
按照说明,我构建了一个支持Fortran的NDK工具链(OSX,NDK-7b),目标是构建LAPACK/BLAS 将安卓cmake与3.4.0Netlib源代码一起使用,似乎我几乎成功了。但是,当链接其中一个测试时,BLAS构建失败(错误为未解析的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
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之前的版本,所以它真的不可用吗?