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

使用SDK中交叉编译工具链clang时,找不到头文件并且找不到usrinclude、usrlocalinclude文件夹,第1张

目录

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 ""
# 1 "" 1
# 1 "" 3
# 403 "" 3
# 1 "" 1
# 1 "" 2
# 1 "" 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路径添加回来【未做尝试】

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674197.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存