# Python binding prolem when cross compiling OpenCV4.10 with Android cmake and NDK toolchains on Ubuntu

**URL:** https://forum.opencv.org/t/python-binding-prolem-when-cross-compiling-opencv4-10-with-android-cmake-and-ndk-toolchains-on-ubuntu/23215
**Category:** Android/Java
**Tags:** ndk, android, build
**Created:** [July 19, 2025, 12:00pm UTC](https://forum.opencv.org/t/python-binding-prolem-when-cross-compiling-opencv4-10-with-android-cmake-and-ndk-toolchains-on-ubuntu/23215 "2025-07-19T12:00:06Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![oldcoder-pixel](https://avatars.discourse-cdn.com/v4/letter/o/ecb155/32.png) [@oldcoder-pixel](https://forum.opencv.org/u/oldcoder-pixel)
#### Post date: [July 19, 2025, 12:00pm UTC](https://forum.opencv.org/t/python-binding-prolem-when-cross-compiling-opencv4-10-with-android-cmake-and-ndk-toolchains-on-ubuntu/23215/1 "2025-07-19T12:00:06Z")

</div>

1. Environment and Target

**Build environment** : Ubuntu  
**Target environment** : aarch64-Linux-Android  
I have cross compiled Python 3.11 and it can run on Android arm-v8a. I want to cross compile OpenCV to generate a Python library that supports the target environment.

1. Building and Question  
This is my cmake script:

```auto
export PYTHON3=/home/ad/dev-lib/python311
export PKG_CONFIG_PATH=/home/ad/dev-lib/python311/lib/pkgconfig:$PKG_CONFIG_PATH

/home/ad/Android/Sdk/cmake/4.0.2/bin/cmake \
 -DCMAKE_TOOLCHAIN_FILE=/home/ad/Android/Sdk/ndk/27.2.12479018/build/cmake/android.toolchain.cmake \
 -DCMAKE_BUILD_TYPE=Release \
 -DANDROID_ABI:STRING=arm64-v8a \
 -DANDROID_PLATFORM:STRING=android-30 \
 -DCMAKE_INSTALL_PREFIX:PATH=/home/ad/dev-lib/Opecv-4.10.0/myinstall \
 -DBUILD_opencv_python3:BOOL=ON \
 -DBUILD_SHARED_LIBS:BOOL=ON \
 -DPYTHON3_EXECUTABLE:FILEPATH=${PYTHON3}/bin/python3.11 \
 -DPYTHON3_INCLUDE_DIR:PATH=${PYTHON3}/include/python3.11 \
 -DPYTHON3_LIBRARY:FILEPATH=${PYTHON3}/lib/libpython3.so \
 -DPYTHON3_PACKAGES_PATH:STRING=${PYTHON3}/lib/python3.11/site-packages \
 -DPYTHON3_NUMPY_INCLUDE_DIRS:PATH=/home/ad/dev-lib/numpy/dist2/lib/python3.11/site-packages/numpy/_core/include \
 -DOpenBLAS_INCLUDE_DIR:PATH=/home/ad/dev-lib/OpenBLAS1/myinstall/include \
 -DOpenBLAS_LIB:FILEPATH=/home/ad/dev-lib/OpenBLAS1/myinstall/lib/libopenblas.so \
 -DPYTHON3_CVPY_SUFFIX=".so" \
 -DOpenCV_BINARY_DIR:STATIC=/home/ad/opencv-4.10.0/mybuild \
 -DBUILD_LIST=core,imgproc \
 -DBUILD_opencv_apps=OFF \
 -DBUILD_EXAMPLES=OFF \
 -DBUILD_TESTS=OFF \
 -DBUILD_PERF_TESTS=OFF \
 -DBUILD_DOCS=OFF \
 -DBUILD_PACKAGE=OFF \
 -DBUILD_opencv_dnn=OFF \
 -S ./ -B ./mybuild

```

But after executing the cmake command, the options related to Python 3 are empty, as shown in the following figure.

 ![no-python](https://us1.discourse-cdn.com/flex020/uploads/opencv/original/2X/a/a2d76617417f85eed5b2efbe26da3daa59af8892.jpeg)

> **Configuration process of cmake section**
>
> ad@ad-virtual-machine:~/dev-lib/opencv-4.10.0$ ./cmake-opencv.sh  
> CMake Deprecation Warning at CMakeLists.txt:25 (cmake\_minimum\_required):  
> Compatibility with CMake \< 3.10 will be removed from a future version of  
> CMake.
> 
> ## Update the VERSION argument value. Or, use the … syntax to tell CMake that the project requires at least but has been updated to work with policies introduced by or earlier. …
> 
> ## – General configuration for OpenCV 4.10.0 ===================================== – Version control: unknown
> 
> ## – Platform: – Timestamp: 2025-07-19T11:38:32Z – Host: Linux 6.8.0-60-generic x86\_64 – Target: Android 1 aarch64 – CMake: 4.0.2 – CMake generator: Unix Makefiles – CMake build tool: /usr/bin/gmake – Configuration: Release
> 
> ## – CPU/HW features: – Baseline: NEON FP16 – Dispatched code generation: NEON\_DOTPROD NEON\_FP16 NEON\_BF16 – requested: NEON\_FP16 NEON\_BF16 NEON\_DOTPROD – NEON\_DOTPROD (1 files): + NEON\_DOTPROD – NEON\_FP16 (0 files): + NEON\_FP16 – NEON\_BF16 (0 files): + NEON\_BF16
> 
> ## – C/C++: – Built as dynamic libs?: YES – C++ standard: 11 – C++ Compiler: /home/ad/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/linux-x86\_64/bin/clang++ (ver 18.0.3) – C++ flags (Release): -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D\_FORTIFY\_SOURCE=2 -Wformat -Werror=format-security -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -Wno-deprecated-enum-enum-conversion -Wno-deprecated-anon-enum-enum-conversion -fdiagnostics-show-option -Qunused-arguments -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG – C++ flags (Debug): -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D\_FORTIFY\_SOURCE=2 -Wformat -Werror=format-security -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -Wno-deprecated-enum-enum-conversion -Wno-deprecated-anon-enum-enum-conversion -fdiagnostics-show-option -Qunused-arguments -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -fno-limit-debug-info -O0 -DDEBUG -D\_DEBUG – C Compiler: /home/ad/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/linux-x86\_64/bin/clang – C flags (Release): -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D\_FORTIFY\_SOURCE=2 -Wformat -Werror=format-security -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -Wno-deprecated-enum-enum-conversion -Wno-deprecated-anon-enum-enum-conversion -fdiagnostics-show-option -Qunused-arguments -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG – C flags (Debug): -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D\_FORTIFY\_SOURCE=2 -Wformat -Werror=format-security -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -Wno-deprecated-enum-enum-conversion -Wno-deprecated-anon-enum-enum-conversion -fdiagnostics-show-option -Qunused-arguments -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -fno-limit-debug-info -O0 -DDEBUG -D\_DEBUG – Linker flags (Release): -static-libstdc++ -Wl,–build-id=sha1 -Wl,–no-undefined-version -Wl,–fatal-warnings -Wl,–no-undefined -Qunused-arguments -Wl,–gc-sections -Wl,–as-needed -Wl,–no-undefined -Wl,–gc-sections – Linker flags (Debug): -static-libstdc++ -Wl,–build-id=sha1 -Wl,–no-undefined-version -Wl,–fatal-warnings -Wl,–no-undefined -Qunused-arguments -Wl,–gc-sections -Wl,–as-needed -Wl,–no-undefined – ccache: NO – Precompiled headers: NO – Extra dependencies: dl m log – 3rdparty dependencies:
> 
> ## – OpenCV modules: – To be built: core imgproc – Disabled: dnn world – Disabled by dependency: calib3d features2d flann gapi highgui imgcodecs java\_bindings\_generator js\_bindings\_generator ml objc\_bindings\_generator objdetect photo stitching video videoio – Unavailable: java python2 python3 ts – Applications: - – Documentation: NO – Non-free algorithms: NO
> 
> ## – Android NDK: /home/ad/Android/Sdk/ndk/27.2.12479018 (ver 27.2.12479018) – Android ABI: arm64-v8a – NDK toolchain: aarch64-linux-android-clang – STL type: c++\_static – Native API level: 30 – Android SDK: /home/ad/Android/Sdk (tools: build tools: 36.0.0)
> 
> ## – GUI:
> 
> ## – Media I/O: – ZLib: z (ver 1.3.0.1) – JPEG: build-libjpeg-turbo (ver 3.0.3-70) – SIMD Support Request: YES – SIMD Support: YES – WEBP: build (ver encoder: 0x020f) – PNG: build (ver 1.6.43) – SIMD Support Request: YES – SIMD Support: YES (Arm NEON) – TIFF: build (ver 42 - 4.6.0) – JPEG 2000: build (ver 2.5.0) – OpenEXR: build (ver 2.3.0) – HDR: YES – SUNRASTER: YES – PXM: YES – PFM: YES
> 
> ## – Video I/O: – MEDIANDK: YES – NDK Camera: YES
> 
> ## – Parallel framework: pthreads
> 
> ## – Trace: YES (with Intel ITT)
> 
> ## – Other third-party libraries: – Custom HAL: YES (carotene (ver 0.0.1, Auto detected)) – Protobuf: build (3.19.1) – Flatbuffers: builtin/3rdparty (23.5.9)
> 
> ## – Python 3: – Interpreter: NO – Libraries: NO – Limited API: NO – numpy: /home/ad/dev-lib/numpy/dist2/lib/python3.11/site-packages/numpy/\_core/include (ver ) – install path: -
> 
> ## – Python (for build): NO
> 
> ## – Java: – ant: NO – Java wrappers: NO – Java tests: NO
> 
> – Install to: /home/ad/dev-lib/Opecv-4.10.0/myinstall
> 
> * * *
> 
> –  
> – Configuring done (29.1s)  
> – Generating done (0.5s)  
> – Build files have been written to: /home/ad/dev-lib/opencv-4.10.0/mybuild
