# Compile Tesseract-OCR for Android ARM64 use x86\_64-linux-gnu headers

**URL:** https://discourse.cmake.org/t/compile-tesseract-ocr-for-android-arm64-use-x86-64-linux-gnu-headers/15373
**Category:** Usage
**Created:** [December 8, 2025, 3:27am UTC](https://discourse.cmake.org/t/compile-tesseract-ocr-for-android-arm64-use-x86-64-linux-gnu-headers/15373 "2025-12-08T03:27:11Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![pol2095](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/p/e99b99/32.png) [@pol2095](https://discourse.cmake.org/u/pol2095)
#### Post date: [December 8, 2025, 3:27am UTC](https://discourse.cmake.org/t/compile-tesseract-ocr-for-android-arm64-use-x86-64-linux-gnu-headers/15373/1 "2025-12-08T03:27:11Z")

</div>

Hello,

When I configure a Tesseract-OCR project for Android arm64-v8a on Ubuntu, I use the following settings :

```auto
set(CMAKE_TOOLCHAIN_FILE /home/user/SDKs/android_ndk/android_ndk_clang/build/cmake/android.toolchain.cmake)
set(ANDROID_ABI arm64-v8a)
set(ANDROID_PLATFORM 26) 
set(ANDROID_STL c++_shared)

```

I receive this message using `make` command:

```auto
/usr/include/x86_64-linux-gnu/sys/cdefs.h:64:6: error: function-like macro '__GNUC_PREREQ' is not defined
    64 | # if __GNUC_PREREQ (4, 6) && !defined _LIBC
       | ^
/usr/include/x86_64-linux-gnu/sys/cdefs.h:78:10: error: function-like macro '__GNUC_PREREQ' is not defined
    78 | && (__GNUC_PREREQ (3, 4) ||__glibc_has_attribute
( __nothrow__ ))
       | ^
/usr/include/x86_64-linux-gnu/sys/cdefs.h:84:31: error: function-like macro '__GNUC_PREREQ' is not defined
    84 | # if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major__ >= 4)
       |

```

I don’t understand why Tesseract-OCR for Android ARM64 use x86\_64-linux-gnu headers instead of Android NDK headers ?  
How I can solve this behavior ?  
Thanks

---

<div class="post-metadata">

### Author: ![hsattler](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/h/59ef9b/32.png) [@hsattler](https://discourse.cmake.org/u/hsattler)
#### Post date: [December 8, 2025, 6:43am UTC](https://discourse.cmake.org/t/compile-tesseract-ocr-for-android-arm64-use-x86-64-linux-gnu-headers/15373/2 "2025-12-08T06:43:47Z")

</div>

> [@pol2095](#):
>
> ```auto
> set(ANDROID_ABI arm64-v8a)
> set(ANDROID_PLATFORM 26)
> 
> ```

Are those values exchanged?

---

<div class="post-metadata">

### Author: ![pol2095](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/p/e99b99/32.png) [@pol2095](https://discourse.cmake.org/u/pol2095)
#### Post date: [December 14, 2025, 9:40am UTC](https://discourse.cmake.org/t/compile-tesseract-ocr-for-android-arm64-use-x86-64-linux-gnu-headers/15373/4 "2025-12-14T09:40:53Z")

</div>

No, those two values are not swapped — they serve different purposes in an Android NDK CMake configuration.

---

<div class="post-metadata">

### Author: ![stephan-cr](https://discourse.cmake.org/user_avatar/discourse.cmake.org/stephan-cr/32/5947_2.png) [@stephan-cr](https://discourse.cmake.org/u/stephan-cr)
#### Post date: [December 14, 2025, 10:57am UTC](https://discourse.cmake.org/t/compile-tesseract-ocr-for-android-arm64-use-x86-64-linux-gnu-headers/15373/5 "2025-12-14T10:57:15Z")

</div>

> [@pol2095](#):
>
> ```auto
> set(CMAKE_TOOLCHAIN_FILE /home/user/SDKs/android_ndk/android_ndk_clang/build/cmake/android.toolchain.cmake)
> set(ANDROID_ABI arm64-v8a)
> set(ANDROID_PLATFORM 26) 
> set(ANDROID_STL c++_shared)
> 
> ```

Where are you setting this exactly?

---

<div class="post-metadata">

### Author: ![pol2095](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/p/e99b99/32.png) [@pol2095](https://discourse.cmake.org/u/pol2095)
#### Post date: [December 14, 2025, 11:14am UTC](https://discourse.cmake.org/t/compile-tesseract-ocr-for-android-arm64-use-x86-64-linux-gnu-headers/15373/6 "2025-12-14T11:14:11Z")

</div>

in `<project>/cross-compiling/android/arm64-v8a/android.toolchain.config.cmake`
