交叉编译C++的错误,找不到"features.h"文件
In file included from /home/bo/Downloads/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/include/c++/10.3.1/aarch64-none-linux-gnu/bits/c++config.h:522,
from /home/bo/Downloads/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/include/c++/10.3.1/iostream:38,
from /home/bo/ws_m76/main.cpp:1:
/home/bo/Downloads/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/include/c++/10.3.1/aarch64-none-linux-gnu/bits/os_defines.h:39:10: fatal error: features.h: No such file or directory
39 | #include <features.h>
| ^~~~~~~~~~~~
原因是不应该设置
CMAKE_FIND_ROOT_PATH
修改后的CMakeLists.txt文件内容如下
# 设置最低 CMake 版本要求
cmake_minimum_required(VERSION 3.0)
# 项目信息
project(CrossCompileProject)
# 用户自定义选项
option(USE_TOOLCHAIN_FILE "Use a custom toolchain file for cross-compilation" ON)
set ( CMAKE_BUILD_TYPE "Release")
# set ( CMAKE_CXX_STANDARD 14 )
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -Wall -g2 -ggdb" )
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -Wall" )
# 如果使用外部工具链文件
if (USE_TOOLCHAIN_FILE)
message(STATUS "Using external USE_TOOLCHAIN_FILE")
# 手动指定交叉编译工具链设置
set(CMAKE_SYSTEM_NAME Linux) # 目标系统,比如 Linux、Windows
set(CMAKE_SYSTEM_PROCESSOR aarch64) # 目标平台架构,例如 arm, aarch64, x86_64
# 指定工具链路径
# 修改为你的工具链根目录
# set(TOOLCHAIN_PREFIX "/usr/local/arm-toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu")
# set(TOOLCHAIN_PREFIX "/home/bo/Downloads/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu")
set(TOOLCHAIN_PREFIX "/home/bo/Downloads/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu")
set(CMAKE_C_COMPILER "${TOOLCHAIN_PREFIX}/bin/aarch64-none-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_PREFIX}/bin/aarch64-none-linux-gnu-g++")
# set(CMAKE_LINKER "${TOOLCHAIN_PREFIX}/bin/aarch64-none-linux-gnu-ld")
# set(CMAKE_AR "${TOOLCHAIN_PREFIX}/bin/aarch64-none-linux-gnu-ar")
# set(CMAKE_RANLIB "${TOOLCHAIN_PREFIX}/bin/aarch64-none-linux-gnu-ranlib")
# 设置 CMake 查找目标系统库的路径,设置了之后只能在指CMAKE_FIND_ROOT_PATH
# set(CMAKE_FIND_ROOT_PATH "${TOOLCHAIN_PREFIX}")
# set(CMAKE_SYSROOT "${TOOLCHAIN_PREFIX}")
# 配置路径优先级(只查找目标系统中的库)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
# include_directories(
# # {TOOLCHAIN_PREFIX}/aarch64-none-linux-gnu/include/c++/9.2.1/parallel
# # {TOOLCHAIN_PREFIX}/aarch64-none-linux-gnu/include/c++/9.2.1
# )
endif ()
# 添加源文件
add_executable(${PROJECT_NAME} main.cpp) # 替换 main.cpp 为你的实际源文件
# 添加编译选项(根据需要修改)
# target_compile_options(${PROJECT_NAME} PRIVATE -Wall -O2 )
# 链接选项(如果需要)
# target_link_options(${PROJECT_NAME} PRIVATE -static-libgcc -static-libstdc++)