使用SDK中交叉编译工具链clang时,找不到头文件并且找不到/usr/include、/usr/local/include文件夹

在使用SDK的交叉编译工具链clang/clang++时遇到找不到/usr/include和/usr/local/include头文件的问题。通过 clang++-E-xc++--v 查看,发现这两个路径被屏蔽。解决方法包括:1) 将所需库和头文件安装到/home/faw/SDK/aos/bin/../sysroot/usr路径下;2) 添加屏蔽的路径回编译搜索路径。
摘要由CSDN通过智能技术生成

目录

1、问题描述

2、原因分析

3、解决办法


1、问题描述

       使用SDK中交叉编译工具链clang/clang++时,找不到头文件并且找不到/usr/include、/usr/local/include文件夹

在/usr/include路径下创建fun_test.h,并且在cmake中已经指定/usr/include

 执行cmake编译时出现问题如下:

2、原因分析

后来通过命令clang++ -E -x c++ - -v < /dev/null查看头文件路径

root@821cbad129f8:/home/faw/SDK/aos/bin# /home/faw/SDK/aos/bin/clang++ -E -x c++ - -v < /dev/null
iAOS-V200R007C10B010 clang version 10.0.1 (5884dab7e3da)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/faw/SDK/aos/bin
 (in-process)
 "/home/faw/SDK/aos/bin/clang-10" -cc1 -triple aarch64-unknown-linux-gnu -E -disable-free -disable-llvm-verifier -discard-value-names -main-file-name - -mrelocation-model static -mthread-model posix -mllvm -pass-remarks= -mllvm -pass-remarks-missed= -mllvm -pass-remarks-analysis= -mframe-pointer=non-leaf -fmath-errno -fno-rounding-math -masm-verbose -mconstructor-aliases -target-cpu generic -target-feature +neon -target-abi aapcs -fallow-half-arguments-and-returns -dwarf-column-info -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /home/faw/SDK/aos/lib64/clang/10.0.1 -isysroot /home/faw/SDK/aos/bin/../sysroot -internal-isystem /home/faw/SDK/aos/bin/../sysroot/usr/include/c++/v1 -internal-isystem /home/faw/SDK/aos/bin/../sysroot/usr/local/include -internal-isystem /home/faw/SDK/aos/lib64/clang/10.0.1/include -internal-externc-isystem /home/faw/SDK/aos/bin/../sysroot/include -internal-externc-isystem /home/faw/SDK/aos/bin/../sysroot/usr/include -fdeprecated-macro -fdebug-compilation-dir /home/faw/SDK/aos/bin -ferror-limit 19 -fmessage-length 0 -fno-signed-char -fgnuc-version=4.2.1 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -mllvm -delete-infinite-loops=true -mllvm -enable-loop-split=true -faddrsig -o - -x c++ -
clang -cc1 version 10.0.1 based upon LLVM 10.0.1 default target aarch64-unknown-linux-gnu
ignoring nonexistent directory "/home/faw/SDK/aos/bin/../sysroot/usr/local/include"
ignoring nonexistent directory "/home/faw/SDK/aos/bin/../sysroot/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/faw/SDK/aos/bin/../sysroot/usr/include/c++/v1
 /home/faw/SDK/aos/lib64/clang/10.0.1/include
 /home/faw/SDK/aos/bin/../sysroot/usr/include
End of search list.
# 1 "<stdin>"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 403 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "<stdin>" 2

发现少了/usr/include路径以及/usr/local/include路径,顾得出结论,此交叉编译工具链在底层封装时为了屏蔽系统库的干扰,对/usr/include路径以及/usr/local/include路径进行了屏蔽处理,所以在上述代码编译中获取不到头文件的现象

3、解决办法

        a) 安装所需的库以及头文件可以安装至/home/faw/SDK/aos/bin/../sysroot/usr/路径下,这样就可以解决找不到头文件的问题【已实验,可解决问题】

        b) 可以将屏蔽的/usr/include路径以及/usr/local/include路径添加回来【未做尝试】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值