You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Clang交叉编译无法找到C++头文件,但GCC可正常编译

交叉编译C应用:Clang无法识别标准C头文件的问题

我正在为两款不同的单板计算机编译应用程序:

  • 其中一款使用GCC交叉编译器可成功构建
  • 另一款没有预构建的GCC交叉编译器,因此选择使用Clang,但遇到了问题:Clang找不到<algorithm>这类标准C++头文件

两次编译使用的源代码、所有CMakeLists.txt文件完全一致,仅工具链文件和对应的sysroot路径不同。我已经确认algorithm文件位于C:/Bananapi_rootfs/usr/include/c++/8/目录下,但Clang并未将该目录纳入头文件搜索列表。

请问我需要在工具链文件中手动添加该目录,还是有特定的Clang开关可以让它自动找到这个目录?


Clang编译命令及输出

[build]  "C:/msys64/clang64/bin/clang++.exe" -cc1 -triple aarch64-unknown-linux-gnu -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name format.cc -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +neon -target-feature +v8a -target-abi aapcs -tune-cpu cortex-a55 -debugger-tuning=gdb -v -fcoverage-compilation-dir=C:/Users/AZARUB~1/DOCUME~1/my_app/build/fmt -resource-dir C:/msys64/clang64/lib/clang/17 -dependency-file "CMakeFiles\fmt.dir\src\format.cc.o.d" -MT fmt/CMakeFiles/fmt.dir/src/format.cc.o -sys-header-deps -I "C:\Users\AZARUB~1\DOCUME~1\my_app\fmt\include" -D NDEBUG -isysroot C:/Bananapi_rootfs -internal-isystem C:/msys64/clang64/lib/clang/17/include -internal-isystem C:/Bananapi_rootfs/usr/local/include -internal-isystem C:/Bananapi_rootfs/lib/gcc/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/include -internal-externc-isystem C:/Bananapi_rootfs/usr/include/aarch64-linux-gnu -internal-externc-isystem C:/Bananapi_rootfs/include -internal-externc-isystem C:/Bananapi_rootfs/usr/include -O3 -Wall -Wextra -Wpedantic -std=gnu++17 -fdeprecated-macro -fdebug-compilation-dir=C:/Users/AZARUB~1/DOCUME~1/my_app/build/fmt -ferror-limit 19 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -target-feature -fmv -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o "CMakeFiles\fmt.dir\src\format.cc.o" -x c++ "C:\Users\azarubkin\Documents\my_app\fmt\src\format.cc"
[build] clang -cc1 version 17.0.6 based upon LLVM 17.0.6 default target x86_64-w64-windows-gnu
[build] ignoring nonexistent directory "C:/Bananapi_rootfs/lib/gcc/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/include"
[build] ignoring nonexistent directory "C:/Bananapi_rootfs/include"
[build] #include "..." search starts here:
[build] #include <...> search starts here:
[build]  C:\Users\AZARUB~1\DOCUME~1\my_app\fmt\include
[build]  C:/msys64/clang64/lib/clang/17/include
[build]  C:/Bananapi_rootfs/usr/local/include
[build]  C:/Bananapi_rootfs/usr/include/aarch64-linux-gnu
[build]  C:/Bananapi_rootfs/usr/include
[build] End of search list.

GCC编译命令及输出

GCC命令

"C:\\SysGCC\\beaglebone\\bin\\arm-linux-gnueabihf-g++.exe --sysroot=C:/beaglebone_rootfs  -IC:\\Users\\AZARUB~1\\DOCUME~1\\my_app\\fmt\\include -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard -Wp,-v  -O3 -DNDEBUG -std=gnu++17 -Wall -Wextra -Wpedantic -o CMakeFiles\\fmt.dir\\src\\os.cc.o -c \"C:\\Users\\azarubkin\\Documents\\my_app\\fmt\\src\\os.cc\""

GCC输出

[build] [ 10%] Building CXX object fmt/CMakeFiles/fmt.dir/src/os.cc.o
[build] ignoring nonexistent directory "c:\sysgcc\beaglebone\include\arm-linux-gnueabihf\c++\8"
[build] ignoring nonexistent directory "c:\sysgcc\beaglebone\arm-linux-gnueabihf\include\arm-linux-gnueabihf\c++\8\arm-linux-gnueabihf"
[build] ignoring duplicate directory "c:\sysgcc\beaglebone\arm-linux-gnueabihf\include\c++\8"
[build] ignoring nonexistent directory "c:\sysgcc\beaglebone\include\arm-linux-gnueabihf\c++\8"
[build] ignoring nonexistent directory "c:\sysgcc\beaglebone\arm-linux-gnueabihf\include\arm-linux-gnueabihf\c++\8"
[build] ignoring duplicate directory "c:\sysgcc\beaglebone\arm-linux-gnueabihf\include\c++\8\backward"
[build] ignoring duplicate directory "c:\sysgcc\beaglebone\lib\gcc\arm-linux-gnueabihf\8\include"
[build] ignoring nonexistent directory "c:\beaglebone_rootfs\mnt\f\gnu\beaglebone\out\include\arm-linux-gnueabihf"
[build] ignoring nonexistent directory "c:\beaglebone_rootfs\mnt\f\gnu\beaglebone\out\include"
[build] ignoring duplicate directory "c:\sysgcc\beaglebone\lib\gcc\arm-linux-gnueabihf\8\include-fixed"
[build] ignoring duplicate directory "c:\sysgcc\beaglebone\arm-linux-gnueabihf\include"
[build] #include "..." search starts here:
[build] #include <...> search starts here:
[build]  C:\Users\AZARUB~1\DOCUME~1\my_app\fmt\include
[build]  c:\sysgcc\beaglebone\arm-linux-gnueabihf\include\c++\8
[build]  c:\sysgcc\beaglebone\arm-linux-gnueabihf\include\c++\8\backward
[build]  c:\sysgcc\beaglebone\lib\gcc\arm-linux-gnueabihf\8\include
[build]  c:\sysgcc\beaglebone\lib\gcc\arm-linux-gnueabihf\8\include-fixed
[build]  c:\sysgcc\beaglebone\arm-linux-gnueabihf\include
[build]  c:\beaglebone_rootfs\usr\include\arm-linux-gnueabihf
[build]  c:\beaglebone_rootfs\usr\include
[build] End of search list.

内容的提问来源于stack exchange,提问作者Alexandr Zarubkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:54:58