【问题标题】:Android CMake "fatal error: 'bits/libc-header-start.h' file not found"Android CMake“致命错误:找不到'bits/libc-header-start.h'文件”
【发布时间】:2019-06-26 01:09:39
【问题描述】:

我在 android studio 中遇到了这个问题。我将制作用于 android 项目的本机 c 代码。我用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:致命错误:找不到“bits/libc-header-start.h”文件
#include <bits/libc-header-start.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

有人可以帮我吗?请...

【问题讨论】:

  • 使用CMAKE_FIND_ROOT_PATH_MODE_* 表明您正在交叉编译。并且系统包含目录/usr/include 很少用于交叉编译。您需要使用为目标平台构建的curl 库,而不是为主机平台。
  • 感谢您的回复。顺便说一句,我应该使用适合我的目标平台的 curl c 库,而不是使用 ,你的意思是?我想知道您是否提到我在哪里可以找到并包含该库。你愿意帮助我吗?
  • 正如我所说,您需要适合目标平台的curl 库。我不知道从哪里获得它。
  • 我明白了。非常感谢。

标签: android c++ cmake


【解决方案1】:

交叉编译适用于所有类型设备的 curl 库可能不太可能。我找到了三种类型的库:armeabiarmeabi-v7ax86。而64位架构的cpu可以在操作系统的自适应功能下自动执行32位程序。这三个库常见于 cocos2d-x game-source-project 中。所以这篇文章的读者应该使用ndk-build而不是cmake来达到这个条件,suit-target-device。

【讨论】:

    猜你喜欢
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2015-01-20
    • 2014-12-21
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多