Android CMake «фатальная ошибка: файл bits/libc-header-start.h не найден»

Я столкнулся с этой проблемой в студии Android. Я собираюсь сделать собственный код C, который используется в проекте Android. Я использую cmake. Чтобы свернуть какой-то URL-адрес, я включаю некоторые библиотеки в CMakeLists.txt. Ниже приведено содержимое моего файла CMakeLists.txt.

cmake_minimum_required(VERSION 3.4.1)

set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)

set(CURL_INCLUDE_DIR "/usr/include")
set(CURL_LIBRARY "-lcurl")

find_package(CURL REQUIRED)
include_directories(${CURL_INCLUDE_DIRS})

add_library(native-lib SHARED native-lib.cpp )

find_library(log-lib log )

target_link_libraries(native-lib ${CURL_LIBRARIES} ${log-lib})

И тут я встретил следующую фатальную ошибку.

/usr/include/stdint.h:26:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~

Кто-нибудь может мне помочь? Пожалуйста...

Использование CMAKE_FIND_ROOT_PATH_MODE_* предполагает, что вы кросс-компиляция. И системный каталог включения /usr/include редко полезен для кросс-компиляции. Вам нужно использовать библиотеку curl, созданную для целевой платформы, а не для основной.

Tsyvarev 26.06.2019 10:26

Спасибо за ваш ответ. Кстати, вместо использования <CMAKE_FIND_ROOT_PATH_MODE_*> я должен использовать библиотеку curl c, подходящую для моей целевой платформы, вы имели в виду? Интересно, упомянете ли вы, где я могу найти и включить эту библиотеку. Хочешь мне помочь?

Boris Jacksone 26.06.2019 12:11

Как я уже сказал, вам нужна библиотека curl, подходящая для целевой платформы. Я не знаю, где его получить.

Tsyvarev 26.06.2019 13:24

Понимаю. Спасибо большое.

Boris Jacksone 26.06.2019 15:12
2
4
833
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вероятно, неправильно невозможно кросс-компилировать библиотеку curl, подходящую для всех типов устройств. Я нашел три типа библиотек: armeabi, armeabi-v7a и x86. Однако процессор с 64-битной архитектурой может автоматически выполнять 32-битные программы под адаптивной функцией операционной системы. Эти три библиотеки обычно находятся в cocos2d-x game-source-project. Таким образом, читатель этой статьи должен использовать ndk-build вместо cmake, чтобы достичь этого условия, костюм-целевое-устройство.

Другие вопросы по теме