在用gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu进行交叉编译时,出现报错:
/home/Likejiang/5GNR/gcc-linaro-7.5.0-2019.12-x8664aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.5.0/cstdlib:75:15: fatal error: stdlib.h:
No such file or directory
stdlib明明是标准库,不可能会缺的,查了下资料原来是因为交叉编译时指定了sysroot导致include_next时找不到stdlib.h。而旧版本依旧用的是#include所以不会报错。
复现一下,确实如此


解决方法有两个:
-
修改gcc的默认include路径
参数:-nostdinc使编译器不再系统缺省的头文件目录里面找头文件,不过我没有试。
-
将编译工具的#include_next改为#include
既然新版本的gcc会报错是因为将#include改为了#include_next,那我们换回去不就行了,反正也没用到替换系统头文件的情况。搜索了下编译器里用到#include_next的地方不超过10个,手动改也不费劲。

修改后编译成功

参考链接:
https://www.jianshu.com/p/94faa8d32519
https://blog.csdn.net/shen_bb/article/details/40395225
可以禁能预编译头文件(pre-compield headers),设置-DENABLE_PRECOMPILED_HEADERS=OFF!
转载于:https://blog.51cto.com/6658943/2165162
今天在编译一个QT项目的时候报错了,错误如下:
stdlib.h: No such file or directory
我用的是Ubuntu和QT,很奇怪,之前编译都能成功,这次失败了,网上找到了解决办法。
网上的说法:
这是由于gcc7已经吧stdlib.h纳入了lib...
用VS2010打开VC++6程序,按下F5键会发现有错误提示:error C1083: 无法打开包括文件:“iostream.h”: No such file or directory ;而程序在VC++6中没有任何问题!
主要的原因是:
1.#include是原来的C语言里面的,而#include是c++的标准库里的,而要调用这个这个标准库需要:
using namespace
/usr/include/c++/8/cstdlib:75: error: stdlib.h: No such file or directory
In file included from /usr/include/c++/8/ext/string_conversions.h:41,
from /usr/include/c++/8/bits/basic_string.h:6400,
from /usr/include/c++/8/stri...
交叉编译过程中遇到fatal error: seccomp.h或者ltdl.h: No such file or directory compilation terminated.在x86容器中进行交叉编译arm单板的程序
在x86容器中进行交叉编译arm单板的程序
在交叉编译过程中,出现fatal error: seccomp.h: No such file or directory compilation terminated.
fatal error:ltdl.h: No such file or
cmake编译时报错: 找不到头文件math.h stdlib.h
fatal error: stdlib.h: No such file or directory
fatal error: math.h: No such file or directory
In file included from /usr/local/include/c++/6.2.0/bits/stl_algo.h:59...
1.错误原因
报错如上。后来经过查阅,发现这个错误是因为由于gcc6的缘故。我的gcc 版本是6.5的。gcc6已经把吧stdlib.h纳入了libstdc++以进行更好的优化,C Library的头文件stdlib.h使用 Include_next,而include_next对gcc系统头文件路径很敏感。
所以这里我们不要把include路径作为系统目录,而是使用标准方式包含include 目录。
2.解决办法
在cmake 编译的时候,加上 以下命令在里面,即可成功。
-DENABLE...
今天测试交叉编译器总出现问题,fatal error : stdio.h No such file or directory,后来根据指导使用编译命令 :arm-linux-gcc src.c -I 头文件路径, 能编译通过,但是却arm-linux-ld 又通不过编译内核linux-2.6.36 在make menuconfig 出现错误 Install ncurce , 这是个终端中最简单
原因是fcl/common 文件夹里有time.h和usr/include 路径c++标准库的time.h冲突
当然是.pro里面includepath 不要有fcl/common 这个就可以了,自己需要包含common里面的头文件的话,从上一级目录开始写就可以了
参考解决方案,可能其他时候会用到:
Linux Qt下报/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory 错误
c++报错信息之‘
./build5.sh
/opt/poky/1.7/sysroots/i686-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.1/ld: /tmp/ccoWZZeL.o: undefined reference to symbol '_Znwj@@GLIBCXX_3.4...
如图,需要将第19行,INCLUDEPATH += /usr/include,注释掉,原因是分析,在ubuntu的CSTDLIB中,使用的是#include_next “stdlib.h”, 自行增加/usr/include, 把include_next的顺序打乱了,造成编译错误。但是centos下需要这行包含不然无法编译通过。