Linux环境下编程遇到“fatal error:stdio.h:没有那个文件或目录”错误解决办法

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下linux环境下如何解决一个常见的问题,也就是“fatal error:stdio.h:没有那个文件或目录”错误。

不少初学者在linux环境下用gcc编译C语言时,经常会遇到这个问题。

比如当你写好C语言代码时,你一般会用gcc -o test001 test001.c去编译这个C语言代码,但是一般会弹出这个错误提示,如下图:

 那这样弄下去,永远无法编译通过了。

为什么会这样?

这个主要就是因为上面安装的gcc版本不对,和软硬件不兼容,导致了这个问题。

下面我们来说解决办法。

quzhou@quzhou-L410-KLVU-WDU0:~/桌面$ gcc -o test001 test001.c
test001.c:1:9: fatal error: stdio.h: 没有那个文件或目录
    1 | #include<stdio.h>
      |         ^~~~~~~~~
compilation terminated.

当看到如上错误提示后,我们立即输入下面命令卸载gcc

quzhou@quzhou-L410-KLVU-WDU0:~/桌面$ sudo apt-get remove gcc
[sudo] quzhou 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  cryptsetup cryptsetup-bin libyaml-cpp0.6 localechooser-data user-setup
使用'sudo apt autoremove'来卸载它(它们)。
下列软件包将被【卸载】:
  gcc
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 23 个软件包未被升级。
解压缩后将会空出 51.2 kB 的空间。
您希望继续执行吗? [Y/n] y
(正在读取数据库 ... 系统当前共安装有 186794 个文件和目录。)
正在卸载 gcc (4:9.3.0-11.185.1kylin2k6) ...
正在处理用于 man-db (2.9.1-1kylin0k1hw1) 的触发器 ...

然后赶紧安装一下适合本系统的gcc版本

quzhou@quzhou-L410-KLVU-WDU0:~/桌面$ sudo apt-get install gcc
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  cryptsetup cryptsetup-bin libyaml-cpp0.6 localechooser-data user-setup
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  libc-dev-bin libc6 libc6-dev libcrypt-dev manpages manpages-dev
建议安装:
  gcc-multilib autoconf automake libtool flex bison gdb gcc-doc glibc-doc
下列【新】软件包将被安装:
  gcc libc-dev-bin libc6-dev libcrypt-dev manpages manpages-dev
下列软件包将被升级:
  libc6
升级了 1 个软件包,新安装了 6 个软件包,要卸载 0 个软件包,有 22 个软件包未被升级。
需要下载 8,821 kB 的归档。
解压缩后会消耗 22.5 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 https://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-pv/main arm64 libc6 arm64 2.31-0kylin9.1k20.6 [2,495 kB]
获取:2 https://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-pv/main arm64 manpages all 5.05-1 [1,352 kB]
获取:3 https://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-pv/main arm64 gcc arm64 4:9.3.0-11.185.1kylin2k6 [7,100 B]
获取:4 https://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-pv/main arm64 libc-dev-bin arm64 2.31-0kylin9.1k20.6 [293 kB]
获取:5 https://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-pv/universe arm64 libcrypt-dev arm64 1:4.4.10-10kylin4k3 [113 kB]
获取:6 https://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-pv/main arm64 libc6-dev arm64 2.31-0kylin9.1k20.6 [2,293 kB]
获取:7 https://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-pv/main arm64 manpages-dev all 5.05-1 [2,267 kB]
已下载 8,821 kB,耗时 1秒 (7,505 kB/s)
正在预设定软件包 ...
(正在读取数据库 ... 系统当前共安装有 186758 个文件和目录。)
准备解压 .../libc6_2.31-0kylin9.1k20.6_arm64.deb  ...
正在解压 libc6:arm64 (2.31-0kylin9.1k20.6) 并覆盖 (2.31-0kylin9.1k20.5) ...
正在设置 libc6:arm64 (2.31-0kylin9.1k20.6) ...
正在选中未选择的软件包 manpages。
(正在读取数据库 ... 系统当前共安装有 186758 个文件和目录。)
准备解压 .../0-manpages_5.05-1_all.deb  ...
正在解压 manpages (5.05-1) ...
正在选中未选择的软件包 gcc。
准备解压 .../1-gcc_4%3a9.3.0-11.185.1kylin2k6_arm64.deb  ...
正在解压 gcc (4:9.3.0-11.185.1kylin2k6) ...
正在选中未选择的软件包 libc-dev-bin。
准备解压 .../2-libc-dev-bin_2.31-0kylin9.1k20.6_arm64.deb  ...
正在解压 libc-dev-bin (2.31-0kylin9.1k20.6) ...
正在选中未选择的软件包 libcrypt-dev:arm64。
准备解压 .../3-libcrypt-dev_1%3a4.4.10-10kylin4k3_arm64.deb  ...
正在解压 libcrypt-dev:arm64 (1:4.4.10-10kylin4k3) ...
正在选中未选择的软件包 libc6-dev:arm64。
准备解压 .../4-libc6-dev_2.31-0kylin9.1k20.6_arm64.deb  ...
正在解压 libc6-dev:arm64 (2.31-0kylin9.1k20.6) ...
正在选中未选择的软件包 manpages-dev。
准备解压 .../5-manpages-dev_5.05-1_all.deb  ...
正在解压 manpages-dev (5.05-1) ...
正在设置 manpages (5.05-1) ...
正在设置 gcc (4:9.3.0-11.185.1kylin2k6) ...
正在设置 libcrypt-dev:arm64 (1:4.4.10-10kylin4k3) ...
正在设置 libc-dev-bin (2.31-0kylin9.1k20.6) ...
正在设置 manpages-dev (5.05-1) ...
正在设置 libc6-dev:arm64 (2.31-0kylin9.1k20.6) ...
正在处理用于 man-db (2.9.1-1kylin0k1hw1) 的触发器 ...
正在处理用于 libc-bin (2.31-0kylin9.1k20.5) 的触发器 ...
/sbin/ldconfig.real: /usr/lib/libtinyxml2.so.8 is not a symbolic link

通过这样安装后,我们再用gcc -o进行编译,你就会发现一切正常了,所有问题都解决了。

如果本文帮你解决了问题,留言给个赞吧

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。 

 

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 这个错误提示表明您的程序在编译或运行时无法找到 stdio.h 头文件,这是一个标准 C 语言库文件,其中包含了输入输出相关的函数声明和定义。 可能的原因是您的编译器或开发环境没有正确设置或安装,或者该文件错误地删除或移动。 您可以尝试重新安装您的编译器或开发环境,并确保 stdio.h 文件在正确的位置,通常是在系统的 C 标准库目录中。如果您使用的是 Linux 或类 Unix 操作系统,则可以尝试安装相应的开发工具包,例如 gcc、make 等。如果您使用的是 Windows 操作系统,则可以尝试安装 Visual Studio 或 MinGW 等开发工具。 另外,您也可以尝试手动复制 stdio.h 文件到您的项目目录中,或者在程序中使用相对或绝对路径来引用该文件。 ### 回答2: 这个错误提示表示在编译程序时,编译器找不到 stdio.h 头文件stdio.h 是 C 语言标准库中一个重要的头文件,它包含了对输入输出函数的定义,如果缺少它,就会导致程序无法编译通过。 造成这个错误的原因可能有以下几种: 1. 系统或环境没有安装必要的开发包。在 Linux 系统中,通常需要安装 gcc、g++、make 等开发工具,以及对应的各种库文件。如果缺少了这些支持包,就会导致 stdio.h 头文件无法找到。 2. 头文件路径设置错误。在编译时,需要告诉编译器到哪里去寻找需要的头文件,如果这个路径设置有误,就会产生类似的错误。可以使用 -I 参数指定头文件搜索路径,比如 -I/usr/include。 3. 源代码文件名扩展名错误。如果程序源代码文件扩展名不是 .c 或者 .cpp,编译器就可能不会自动识别它们是 C 语言或 C++ 语言文件,从而无法自动加载对应的标准库头文件,也会导致 stdio.h 未找到的错误。 解决这个错误的方法,一般需要检查上述几种情况并进行逐一排查。例如,可以先检查系统或环境是否安装了必要的开发包,如果没有,就要先安装它们。如果安装了,但仍然出现这个错误,就要检查头文件路径和扩展名。可以使用一些浏览器开发工具或编辑器,如 VSCode、gcc、make 等,帮助分析和排查这个错误,并逐步调整和修正代码。 ### 回答3: 在编译C语言程序时,我们会经常遇到各种各样的错误提示,其中之一就是"fatal error: stdio.h: 没有那个文件目录"。 这个错误提示的含义是,编译器在编译过程中无法找到头文件"stdio.h"。"stdio.h"是C语言中的一个标准头文件,包含了输入输出有关的函数和宏定义。而C语言程序中大量使用了stdio.h头文件中的函数和宏定义,如果缺少这个头文件,那么就无法正常编译、链接和执行程序。 那么,为什么编译器会提示"没有那个文件目录"的错误呢?这通常是因为编译器没有找到所需要的头文件路径。在编译程序时,编译器需要到指定的目录中搜索所需要的头文件,而当它找不到的时候就会发出提示。 那么,我们应该如何解决这个问题呢?首先,需要检查所使用的编译器和所需要的头文件是否匹配。其次,需要检查头文件所在的目录是否正确,并且是否添加到了编译器的搜索路径中。如果头文件所在的目录不正确,可以通过"-I"选项手动指定头文件的路径。如果编译器在搜索路径中找不到头文件,可以将头文件所在的路径添加到编译器的搜索路径中,例如使用"-I"选项指定头文件所在的路径,或在程序中使用#include语句指定头文件所在的路径。 总之,遇到"fatal error: stdio.h: 没有那个文件目录"的错误提示时,需要仔细检查所需要的头文件是否存在,以及编译器是否能够正确找到所需要的头文件路径,只有这样才能顺利进行C语言程序的编译和执行,达到预期的效果。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值