添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在用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
#include_next <stdlib.h>

stdlib明明是标准库,不可能会缺的,查了下资料原来是因为交叉编译时指定了sysroot导致include_next时找不到stdlib.h。而旧版本依旧用的是#include所以不会报错。

复现一下,确实如此
在这里插入图片描述
在这里插入图片描述

解决方法有两个:

  1. 修改gcc的默认include路径
    参数:-nostdinc使编译器不再系统缺省的头文件目录里面找头文件,不过我没有试。

  2. 将编译工具的#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下需要这行包含不然无法编译通过。