Skip to content

compile for Android with >android-ndk-r17c, failed #15521

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
andforce opened this issue Sep 13, 2019 · 4 comments
Closed

compile for Android with >android-ndk-r17c, failed #15521

andforce opened this issue Sep 13, 2019 · 4 comments

Comments

@andforce
Copy link

andforce commented Sep 13, 2019

System information (version)
  • OpenCV = 4.1.1
  • Operating System / Platform => Ubuntu 16.04 64bit
  • Compiler => cmake 3.13.4
Detailed description

I used android-ndk-r17c or android-ndk-r18b compile for android,success.

if i used android-ndk-r19c or android-ndk-r20 ,failed:

[ 57%] Linking CXX shared library ../../lib/armeabi-v7a/libopencv_core.so
bionic/libc/include/bits/fortify/stdio.h:70: error: undefined reference to '__vsnprintf_chk'
bionic/libc/include/bits/fortify/stdio.h:43: error: undefined reference to '__vsnprintf_chk'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
modules/core/CMakeFiles/opencv_core.dir/build.make:1345: recipe for target 'lib/armeabi-v7a/libopencv_core.so' failed
make[2]: *** [lib/armeabi-v7a/libopencv_core.so] Error 1
CMakeFiles/Makefile2:1509: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 57%] Linking CXX static library ../lib/armeabi-v7a/libIlmImf.a
[ 57%] Built target IlmImf
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

cmake command is:

cmake .. -DINSTALL_ANDROID_EXAMPLES=OFF \
-DANDROID_EXAMPLES_WITH_LIBS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_DOCS=OFF \
-DWITH_OPENCL=OFF \
-DWITH_IPP=ON \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang \
-DANDROID_STL=c++_shared \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_ANDROID_PROJECTS=OFF \
-DBUILD_ANDROID_EXAMPLES=OFF \
-DBUILD_PREF_TESTS=OFF \
-DBUILD_TESTS=OFF \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_SDK_TARGET=21

after cmake command finished:

make -j8

failed.

@alalek
Copy link
Member

alalek commented Sep 13, 2019

Can't reproduce with NDK18b. Please compare logs with ours (make VERBOSE=1).


-DBUILD_PREF_TESTS

typo in PERF

@andforce
Copy link
Author

@alalek
thanks, i tried with NDK18b, it's success.

but even failed withandroid-ndk-r19c or android-ndk-r20

log:

[ 57%] Linking CXX shared library ../../lib/armeabi-v7a/libopencv_core.so
cd /home/andforce/Downloads/opencv-4.1.1/build/modules/core && /usr/bin/cmake -E cmake_link_script CMakeFiles/opencv_core.dir/link.txt --verbose=1
/home/andforce/Downloads/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=armv7-none-linux-androideabi16 --gcc-toolchain=/home/andforce/Downloads/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/andforce/Downloads/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mfpu=vfpv3-d16 -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -stdlib=libc++ -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -fdiagnostics-show-option -Qunused-arguments -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -Oz -DNDEBUG -DNDEBUG -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--gc-sections -shared -Wl,-soname,libopencv_core.so -o ../../lib/armeabi-v7a/libopencv_core.so CMakeFiles/opencv_core.dir/src/algorithm.cpp.o CMakeFiles/opencv_core.dir/src/alloc.cpp.o CMakeFiles/opencv_core.dir/src/arithm.cpp.o CMakeFiles/opencv_core.dir/src/arithm.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/array.cpp.o CMakeFiles/opencv_core.dir/src/async.cpp.o CMakeFiles/opencv_core.dir/src/batch_distance.cpp.o CMakeFiles/opencv_core.dir/src/bindings_utils.cpp.o CMakeFiles/opencv_core.dir/src/channels.cpp.o CMakeFiles/opencv_core.dir/src/check.cpp.o CMakeFiles/opencv_core.dir/src/command_line_parser.cpp.o CMakeFiles/opencv_core.dir/src/conjugate_gradient.cpp.o CMakeFiles/opencv_core.dir/src/convert.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/convert_c.cpp.o CMakeFiles/opencv_core.dir/src/convert_scale.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/copy.cpp.o CMakeFiles/opencv_core.dir/src/count_non_zero.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/cuda_gpu_mat.cpp.o CMakeFiles/opencv_core.dir/src/cuda_host_mem.cpp.o CMakeFiles/opencv_core.dir/src/cuda_info.cpp.o CMakeFiles/opencv_core.dir/src/cuda_stream.cpp.o CMakeFiles/opencv_core.dir/src/datastructs.cpp.o CMakeFiles/opencv_core.dir/src/directx.cpp.o CMakeFiles/opencv_core.dir/src/downhill_simplex.cpp.o CMakeFiles/opencv_core.dir/src/dxt.cpp.o CMakeFiles/opencv_core.dir/src/gl_core_3_1.cpp.o CMakeFiles/opencv_core.dir/src/glob.cpp.o CMakeFiles/opencv_core.dir/src/hal_internal.cpp.o CMakeFiles/opencv_core.dir/src/kmeans.cpp.o CMakeFiles/opencv_core.dir/src/lapack.cpp.o CMakeFiles/opencv_core.dir/src/lda.cpp.o CMakeFiles/opencv_core.dir/src/logger.cpp.o CMakeFiles/opencv_core.dir/src/lpsolver.cpp.o CMakeFiles/opencv_core.dir/src/lut.cpp.o CMakeFiles/opencv_core.dir/src/mathfuncs.cpp.o CMakeFiles/opencv_core.dir/src/mathfuncs_core.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/matmul.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/matrix.cpp.o CMakeFiles/opencv_core.dir/src/matrix_c.cpp.o CMakeFiles/opencv_core.dir/src/matrix_decomp.cpp.o CMakeFiles/opencv_core.dir/src/matrix_expressions.cpp.o CMakeFiles/opencv_core.dir/src/matrix_iterator.cpp.o CMakeFiles/opencv_core.dir/src/matrix_operations.cpp.o CMakeFiles/opencv_core.dir/src/matrix_sparse.cpp.o CMakeFiles/opencv_core.dir/src/matrix_wrap.cpp.o CMakeFiles/opencv_core.dir/src/mean.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/merge.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/minmax.cpp.o CMakeFiles/opencv_core.dir/src/norm.cpp.o CMakeFiles/opencv_core.dir/src/ocl.cpp.o CMakeFiles/opencv_core.dir/src/opencl/runtime/opencl_clamdblas.cpp.o CMakeFiles/opencv_core.dir/src/opencl/runtime/opencl_clamdfft.cpp.o CMakeFiles/opencv_core.dir/src/opencl/runtime/opencl_core.cpp.o CMakeFiles/opencv_core.dir/src/opengl.cpp.o CMakeFiles/opencv_core.dir/src/out.cpp.o CMakeFiles/opencv_core.dir/src/ovx.cpp.o CMakeFiles/opencv_core.dir/src/parallel.cpp.o CMakeFiles/opencv_core.dir/src/parallel_impl.cpp.o CMakeFiles/opencv_core.dir/src/pca.cpp.o CMakeFiles/opencv_core.dir/src/persistence.cpp.o CMakeFiles/opencv_core.dir/src/persistence_json.cpp.o CMakeFiles/opencv_core.dir/src/persistence_types.cpp.o CMakeFiles/opencv_core.dir/src/persistence_xml.cpp.o CMakeFiles/opencv_core.dir/src/persistence_yml.cpp.o CMakeFiles/opencv_core.dir/src/rand.cpp.o CMakeFiles/opencv_core.dir/src/softfloat.cpp.o CMakeFiles/opencv_core.dir/src/split.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/stat.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/stat_c.cpp.o CMakeFiles/opencv_core.dir/src/stl.cpp.o CMakeFiles/opencv_core.dir/src/sum.dispatch.cpp.o CMakeFiles/opencv_core.dir/src/system.cpp.o CMakeFiles/opencv_core.dir/src/tables.cpp.o CMakeFiles/opencv_core.dir/src/trace.cpp.o CMakeFiles/opencv_core.dir/src/types.cpp.o CMakeFiles/opencv_core.dir/src/umatrix.cpp.o CMakeFiles/opencv_core.dir/src/utils/datafile.cpp.o CMakeFiles/opencv_core.dir/src/utils/filesystem.cpp.o CMakeFiles/opencv_core.dir/src/utils/logtagconfigparser.cpp.o CMakeFiles/opencv_core.dir/src/utils/logtagmanager.cpp.o CMakeFiles/opencv_core.dir/src/utils/samples.cpp.o CMakeFiles/opencv_core.dir/src/va_intel.cpp.o CMakeFiles/opencv_core.dir/opencl_kernels_core.cpp.o -ldl -lm -llog ../../3rdparty/lib/armeabi-v7a/libtegra_hal.a /home/andforce/Downloads/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a ../../3rdparty/lib/armeabi-v7a/libcpufeatures.a ../../3rdparty/lib/armeabi-v7a/libittnotify.a ../../3rdparty/lib/armeabi-v7a/libtegra_hal.a -ldl -latomic -lm
bionic/libc/include/bits/fortify/stdio.h:70: error: undefined reference to '__vsnprintf_chk'
bionic/libc/include/bits/fortify/stdio.h:43: error: undefined reference to '__vsnprintf_chk'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
modules/core/CMakeFiles/opencv_core.dir/build.make:1345: recipe for target 'lib/armeabi-v7a/libopencv_core.so' failed
make[2]: *** [lib/armeabi-v7a/libopencv_core.so] Error 1
make[2]: Leaving directory '/home/andforce/Downloads/opencv-4.1.1/build'
CMakeFiles/Makefile2:1509: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
make[1]: Leaving directory '/home/andforce/Downloads/opencv-4.1.1/build'
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

@alalek
Copy link
Member

alalek commented Sep 14, 2019

android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a

Seems related: android/ndk#1069

Try to force zlib from OpenCV: cmake -DBUILD_ZLIB=ON ...

@andforce
Copy link
Author

android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a

Seems related: android/ndk#1069

Try to force zlib from OpenCV: cmake -DBUILD_ZLIB=ON ...

@alalek
thans very munch~

i compile success when add -DBUILD_ZLIB=ON compile with android-ndk-r19c AND android-ndk-r20

the complete cmake command is:

cmake .. -DINSTALL_ANDROID_EXAMPLES=OFF \
-DANDROID_EXAMPLES_WITH_LIBS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_DOCS=OFF \
-DWITH_OPENCL=OFF \
-DWITH_IPP=ON \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang \
-DANDROID_STL=c++_shared \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_ANDROID_PROJECTS=OFF \
-DBUILD_ANDROID_EXAMPLES=OFF \
-DBUILD_PREF_TESTS=OFF \
-DBUILD_TESTS=OFF \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_SDK_TARGET=21 \
-DBUILD_ZLIB=ON          # for NDK 19 & 20 compile error

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants