问题描述:
、/usr/include/c++/9/cstdlib:75:15:fatal error:stdlib.h:没有那个文件或目录
#include_next <stdlib.h>
问题原因及解决办法:
我遇到这个问题的原因是我在Ubuntu虚拟机里用下载压缩包的办法下载编译安装了gcc但是没有加头文件环境后面虽然安装了build-essential但还是这个问题,我试过把需要的头文件一个一个拷贝到需要的目录,结果到最后出现满屏满屏的error,回滚后开始改环境参数但是还是没有用,期间用apt-get 安装过gcc没用,用网上更改gcc版本号的方式也没有用,gcc还是原来的版本根本没变成apt-get安装的版本。最后我是回滚到下载压缩包方法安装gcc之前的状态,再用apt-get 安装build-essential 才解决的。解决后分析问题查阅资料发现
可供终端调用的执行文件一般在 /bin 目录
,而且往往是在/usr/bin/目录下,我是没有删除原gcc执行文件换成新的执行文件才导致
build-essential安装后问题没有解决。还有#include_next<stdlib.h>显示的这个问题是由于cstdlib需要的stdlib.h不是和他同一目录下的stdlib.h,是下一个目录里的stdlib.h,也就是不能是C++里的而必须是c的,这就导致光复制一份到下个环境目录也会出现各种不同的且大量error信息,所以要解决问题必须把整个头文件环境复制进去,所以可行的解决方法只能是之前说的删除执行文件,并安装build-essential这个包含gcc,g++,make,以及头文件环境的综合包。
安装build-essential的命令是:
sudo apt update
sudo apt install build-essential
不能安装build-essential的可能问题是没有网络,源镜像不可用,可以自行搜索解决问题的办法。
已经在官网上下载好了redis并解压
wget http://download.redis.io/redis-5.0.7.tar.gz
tar xvzf redis-5.0.7.tar.gz
cd redis-5.0.7
sudo make install
于是遇到问题
听说要先安装
gcc
,装了以后但仍然会
报错
看了别人的办法,原来要...
usr/
lib
/x86_64-linux-gnu/qt5/mkspecs/linux-
g++
-o tmp/obj/main.o main.cpp
In file
include
d from /usr/
include
/
c++
/7/bits/stl_algo.h:59:0,
from /usr/
include
/
c++
/7/algorithm:62,
from /usr/
include
/x86_64-l...
1.错误原因
报错
如上。后来经过查阅,发现这个错误是因为由于
gcc
6的缘故。我的
gcc
版本是6.5的。
gcc
6已经把吧
std
lib
.h纳入了
lib
std
c++
以进行更好的优化,C
Lib
rary的头
文件
std
lib
.h使用
Include
_next,而
include
_next对
gcc
系统头
文件
路径很敏感。
所以这里我们不要把
include
路径作为系统
目录
,而是使用标准方式包含
include
目录
。
2.
解决办法
在cmake
编译
的
时
候,加上 以下命令在里面,即可成功。
-DENABLE...
文件
位置 :etc/apt/sources.list
# deb cdrom:[
Ubuntu
18.04.3 LTS _Bionic Beaver_ - Release amd64 (20190805)]/ bionic main restricted
# See http://help.
ubuntu
.com/community/UpgradeNotes for how to upgrade t...