我正在尝试为android构建openBlas。具体来说,我试图在android上运行我的caffe模型。为此,我关注this GitHub repo。主要错误是
<stdio.h> : no such file or directory
当我尝试构建openBlas时,出现以下错误:
> > ##################### Building OpenBLAS for Android
> #####################
>
> OpenBLAS: Detecting fortran compiler failed. Cannot compile LAPACK.
> Only compile BLAS. make[1]: warning: -jN forced in submake: disabling
> jobserver mode. make[1]: Entering directory
> '/home/sid/caffe-mobile/third_party/OpenBLAS-0.2.19/interface'
> /home/sid/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
> --sysroot=/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm
> -O2 -DMAX_STACK_ALLOC=2048 -Wall -DF_INTERFACE_GFORT -fPIC -DNO_LAPACK -DNO_LAPACKE -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=4 -marm -march=armv5 -DASMNAME=saxpy -DASMFNAME=saxpy_ -DNAME=saxpy_ -DCNAME=saxpy -DCHAR_NAME=\"saxpy_\" -DCHAR_CNAME=\"saxpy\" -DNO_AFFINITY -I.. -I. -UDOUBLE -UCOMPLEX -c axpy.c -o saxpy.o /home/sid/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
> --sysroot=/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm
> -O2 -DMAX_STACK_ALLOC=2048 -Wall -DF_INTERFACE_GFORT -fPIC -DNO_LAPACK -DNO_LAPACKE -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=4 -marm -march=armv5 -DASMNAME=sswap -DASMFNAME=sswap_ -DNAME=sswap_ -DCNAME=sswap -DCHAR_NAME=\"sswap_\" -DCHAR_CNAME=\"sswap\" -DNO_AFFINITY -I.. -I. -UDOUBLE -UCOMPLEX -c swap.c -o sswap.o /home/sid/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
> --sysroot=/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm
> -O2 -DMAX_STACK_ALLOC=2048 -Wall -DF_INTERFACE_GFORT -fPIC -DNO_LAPACK -DNO_LAPACKE -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=4 -marm -march=armv5 -DASMNAME=scopy -DASMFNAME=scopy_ -DNAME=scopy_ -DCNAME=scopy -DCHAR_NAME=\"scopy_\" -DCHAR_CNAME=\"scopy\" -DNO_AFFINITY -I.. -I. -UDOUBLE -UCOMPLEX -c copy.c -o scopy.o /home/sid/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
> --sysroot=/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm
> -O2 -DMAX_STACK_ALLOC=2048 -Wall -DF_INTERFACE_GFORT -fPIC -DNO_LAPACK -DNO_LAPACKE -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=4 -marm -march=armv5 -DASMNAME=sscal -DASMFNAME=sscal_ -DNAME=sscal_ -DCNAME=sscal -DCHAR_NAME=\"sscal_\" -DCHAR_CNAME=\"sscal\" -DNO_AFFINITY -I.. -I. -UDOUBLE -UCOMPLEX -c scal.c -o sscal.o axpy.c:39:19: fatal error: stdio.h: No such file or directory
> #include <stdio.h>
> ^ swap.c:39:19: fatal error: stdio.h: No such file or directory #include <stdio.h>
> ^ compilation terminated. compilation terminated. Makefile:723: recipe for target 'saxpy.o' failed make[1]: ***
> [saxpy.o] Error 1 make[1]: *** Waiting for unfinished jobs....
> Makefile:795: recipe for target 'sswap.o' failed make[1]: ***
> [sswap.o] Error 1 copy.c:39:19: fatal error: stdio.h: No such file or
> directory #include <stdio.h>
> ^ compilation terminated. Makefile:777: recipe for target 'scopy.o' failed make[1]: *** [scopy.o] Error 1 scal.c:39:19:
> fatal error: stdio.h: No such file or directory #include <stdio.h>
> ^ compilation terminated. Makefile:750: recipe for target 'sscal.o' failed make[1]: *** [sscal.o] Error 1 make[1]:
> Leaving directory
> '/home/sid/caffe-mobile/third_party/OpenBLAS-0.2.19/interface'
> Makefile:126: recipe for target 'libs' failed make: *** [libs] Error 1
> getarch_2nd.c: In function ‘main’: getarch_2nd.c:12:35: error:
> ‘SGEMM_DEFAULT_UNROLL_M’ undeclared (first use in this function); did
> you mean ‘XGEMM_DEFAULT_UNROLL_M’?
> printf("SGEMM_UNROLL_M=%d\n", SGEMM_DEFAULT_UNROLL_M);
> ^~~~~~~~~~~~~~~~~~~~~~
> XGEMM_DEFAULT_UNROLL_M getarch_2nd.c:12:35: note: each undeclared identifier is reported only
> once for each function it appears in getarch_2nd.c:13:35: error:
> ‘SGEMM_DEFAULT_UNROLL_N’ undeclared (first use in this function); did
> you mean ‘SGEMM_DEFAULT_UNROLL_M’?
> printf("SGEMM_UNROLL_N=%d\n", SGEMM_DEFAULT_UNROLL_N);
> ^~~~~~~~~~~~~~~~~~~~~~
> SGEMM_DEFAULT_UNROLL_M getarch_2nd.c:14:35: error: ‘DGEMM_DEFAULT_UNROLL_M’ undeclared (first
> use in this function); did you mean ‘SGEMM_DEFAULT_UNROLL_M’?
> printf("DGEMM_UNROLL_M=%d\n", DGEMM_DEFAULT_UNROLL_M);
> ^~~~~~~~~~~~~~~~~~~~~~
> SGEMM_DEFAULT_UNROLL_M getarch_2nd.c:15:35: error: ‘DGEMM_DEFAULT_UNROLL_N’ undeclared (first
> use in this function); did you mean ‘DGEMM_DEFAULT_UNROLL_M’?
> printf("DGEMM_UNROLL_N=%d\n", DGEMM_DEFAULT_UNROLL_N);
> ^~~~~~~~~~~~~~~~~~~~~~
> DGEMM_DEFAULT_UNROLL_M getarch_2nd.c:19:35: error: ‘CGEMM_DEFAULT_UNROLL_M’ undeclared (first
> use in this function); did you mean ‘DGEMM_DEFAULT_UNROLL_M’?
> printf("CGEMM_UNROLL_M=%d\n", CGEMM_DEFAULT_UNROLL_M);
> ^~~~~~~~~~~~~~~~~~~~~~
> DGEMM_DEFAULT_UNROLL_M getarch_2nd.c:20:35: error: ‘CGEMM_DEFAULT_UNROLL_N’ undeclared (first
> use in this function); did you mean ‘CGEMM_DEFAULT_UNROLL_M’?
> printf("CGEMM_UNROLL_N=%d\n", CGEMM_DEFAULT_UNROLL_N);
> ^~~~~~~~~~~~~~~~~~~~~~
> CGEMM_DEFAULT_UNROLL_M getarch_2nd.c:21:35: error: ‘ZGEMM_DEFAULT_UNROLL_M’ undeclared (first
> use in this function); did you mean ‘CGEMM_DEFAULT_UNROLL_M’?
> printf("ZGEMM_UNROLL_M=%d\n", ZGEMM_DEFAULT_UNROLL_M);
> ^~~~~~~~~~~~~~~~~~~~~~
> CGEMM_DEFAULT_UNROLL_M getarch_2nd.c:22:35: error: ‘ZGEMM_DEFAULT_UNROLL_N’ undeclared (first
> use in this function); did you mean ‘ZGEMM_DEFAULT_UNROLL_M’?
> printf("ZGEMM_UNROLL_N=%d\n", ZGEMM_DEFAULT_UNROLL_N);
> ^~~~~~~~~~~~~~~~~~~~~~
> ZGEMM_DEFAULT_UNROLL_M getarch_2nd.c:69:50: error: ‘SGEMM_DEFAULT_Q’ undeclared (first use in
> this function); did you mean ‘SGEMM_DEFAULT_UNROLL_N’?
> printf("#define SLOCAL_BUFFER_SIZE\t%ld\n", (SGEMM_DEFAULT_Q * SGEMM_DEFAULT_UNROLL_N * 4 * 1 * sizeof(float)));
> ^~~~~~~~~~~~~~~
> SGEMM_DEFAULT_UNROLL_N getarch_2nd.c:70:50: error: ‘DGEMM_DEFAULT_Q’
> undeclared (first use in this function); did you mean
> ‘SGEMM_DEFAULT_Q’?
> printf("#define DLOCAL_BUFFER_SIZE\t%ld\n", (DGEMM_DEFAULT_Q * DGEMM_DEFAULT_UNROLL_N * 2 * 1 * sizeof(double)));
> ^~~~~~~~~~~~~~~
> SGEMM_DEFAULT_Q getarch_2nd.c:71:50: error: ‘CGEMM_DEFAULT_Q’ undeclared (first use in
> this function); did you mean ‘DGEMM_DEFAULT_Q’?
> printf("#define CLOCAL_BUFFER_SIZE\t%ld\n", (CGEMM_DEFAULT_Q * CGEMM_DEFAULT_UNROLL_N * 4 * 2 * sizeof(float)));
> ^~~~~~~~~~~~~~~
> DGEMM_DEFAULT_Q getarch_2nd.c:72:50: error: ‘ZGEMM_DEFAULT_Q’ undeclared (first use in
> this function); did you mean ‘CGEMM_DEFAULT_Q’?
> printf("#define ZLOCAL_BUFFER_SIZE\t%ld\n", (ZGEMM_DEFAULT_Q * ZGEMM_DEFAULT_UNROLL_N * 2 * 2 * sizeof(double)));
> ^~~~~~~~~~~~~~~
> CGEMM_DEFAULT_Q make: *** [getarch_2nd] Error 1 make -j 4 -f Makefile.install install
> make[1]: Entering directory
> '/home/sid/caffe-mobile/third_party/OpenBLAS-0.2.19'
> Makefile.install:20: *** OpenBLAS: Please run "make" firstly. Stop.
> make[1]: Leaving directory
> '/home/sid/caffe-mobile/third_party/OpenBLAS-0.2.19' Makefile:309:
> recipe for target 'install' failed make: *** [install] Error 2 CMake
> Warning at third_party/android-cmake/android.toolchain.cmake:324
> (message): Could not determine machine name for compiler from
> /home/sid/Android/Sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64
> Call Stack (most recent call first):
> third_party/android-cmake/android.toolchain.cmake:551
> (__DETECT_TOOLCHAIN_MACHINE_NAME)
> third_party/android-cmake/android.toolchain.cmake:608
> (__GLOB_NDK_TOOLCHAINS)
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include)
> CMakeLists.txt
>
>
> CMake Warning at third_party/android-cmake/android.toolchain.cmake:324
> (message): Could not determine machine name for compiler from
> /home/sid/Android/Sdk/ndk-bundle/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64
> Call Stack (most recent call first):
> third_party/android-cmake/android.toolchain.cmake:551
> (__DETECT_TOOLCHAIN_MACHINE_NAME)
> third_party/android-cmake/android.toolchain.cmake:608
> (__GLOB_NDK_TOOLCHAINS)
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include)
> CMakeLists.txt
>
>
> CMake Error at third_party/android-cmake/android.toolchain.cmake:309
> (file): file STRINGS file
> "/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm/usr/include/android/api-level.h" cannot be read. Call Stack (most recent call first):
> third_party/android-cmake/android.toolchain.cmake:821
> (__DETECT_NATIVE_API_LEVEL)
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include)
> CMakeLists.txt
>
>
> CMake Error at third_party/android-cmake/android.toolchain.cmake:823
> (message): Specified Android API level (16) does not match to the
> level found (). Probably your copy of NDK is broken. Call Stack
> (most recent call first):
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include)
> CMakeLists.txt
>
>
> ERRORCould not find libsupc++.a for a chosen platform. Either your NDK
> is not supported or is broken. CMake Deprecation Warning at
> /usr/share/cmake-3.10/Modules/CMakeForceCompiler.cmake:69 (message):
> The CMAKE_FORCE_C_COMPILER macro is deprecated. Instead just set
> CMAKE_C_COMPILER and allow CMake to identify the compiler. Call Stack
> (most recent call first):
> third_party/android-cmake/android.toolchain.cmake:1146
> (CMAKE_FORCE_C_COMPILER)
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include)
> CMakeLists.txt
>
>
> CMake Deprecation Warning at
> /usr/share/cmake-3.10/Modules/CMakeForceCompiler.cmake:83 (message):
> The CMAKE_FORCE_CXX_COMPILER macro is deprecated. Instead just set
> CMAKE_CXX_COMPILER and allow CMake to identify the compiler. Call
> Stack (most recent call first):
> third_party/android-cmake/android.toolchain.cmake:1158
> (CMAKE_FORCE_CXX_COMPILER)
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include)
> CMakeLists.txt
>
>
> CMake Error: CMake was unable to find a build program corresponding to
> "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need
> to select a different build tool.
> -- Configuring incomplete, errors occurred!
请帮忙。还要尝试查看repo中的make文件。 如果有人知道更好的方法将咖啡馆模型移植到android请建议。