惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
宝玉的分享
宝玉的分享
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
V
Visual Studio Blog
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
A
About on SuperTechFans
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
P
Proofpoint News Feed
L
LangChain Blog
Blog — PlanetScale
Blog — PlanetScale
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】
Martin Fowler
Martin Fowler

博客园 - smil、梵音

css渐变边框的实现 C primer Plus 第六版第4章节复习题5记录 C语言第4章末尾程序找错记录 css 的z-index的层级问题 由webai项目的 AI工作台 项目有感记录 C语言标准(C89/C90)中的32个关键字全列表 Windows 系统的 vscode 通过 Remote-SSH 连接虚拟机的 Ubuntu 系统运行 C 语言的代码 Windows 系统 vscode Remote-SSH 远程连接虚拟机里面的Ubuntu系统的失败处理 Ubuntu虚拟机里安装了SSH,开启SSH服务的时候报错 VS Code的Remote - SSH功能 Ubuntu系统里面安装 g++ ,sudo apt update 的含义 C语言是不是必须得通过gcc编译成可执行的程序? windows系统的虚拟机里面的Ubuntu系统安装VMware Tools Ubuntu的应用中心搜索 vscode 的时候,筛选条件为Snap包、debian包是什么意思,如何安装vscode Ubuntu系统是否就是Linux系统,安装软件和Windows系统有何区别 Ubuntu系统里面vscode运行C语言的第一个 Hello World 程序 vscode 中安装C/C++相关的插件 Ubuntu 安装一个轻量级的中文输入法Fcitx5 Ubuntu安装百度网盘 Ubuntu系统里面安装vscode 乌版图系统截屏快捷键 Ubuntu 系统里面运行C++ TortoiseGit 的安装与汉化 安装虚拟机+ ubuntu24.04 系统 联想小新安装 ubuntu24.04 双系统 | 安装乌版图系统 | windows安装 ubuntu24.04 双系统 利用faststone capture制作gif动图 Sublime Text 常用编辑快捷键速查表 vscode 中的 css 样式代码不显示折叠图标的解决方法 IDEA中git的Cherry-Pick的可视化使用(个人总结) IDEA中git的Cherry-Pick的使用 IDEA中如何实现git的cherry-pick可视化操作?
c语言用gcc编译过后,执行 ./hello.c 报错 ./hello.c: 权限不够
smil、梵音 · 2026-06-22 · via 博客园 - smil、梵音

错误再现:

命令行中执行:

leaf@leaf-XiaoXinPro-16-IAH7:~/桌面/C++/testCode$ gcc hello.c -o hello
leaf@leaf-XiaoXinPro-16-IAH7:~/桌面/C++/testCode$ ./hello.c
bash: ./hello.c: 权限不够

原因分析:

你犯了一个特别经典、几乎每个C语言初学者都会踩的小错误,但问题不大,我一说你就明白了。

你执行的命令是 ./hello.c,但 hello.c 是你的源代码文件(文本文件),而不是编译后生成的可执行程序

你成功的编译命令是 gcc hello.c -o hello,这条命令的意思是:“把 hello.c 编译成名为 hello 的程序”。
所以,编译成功后,当前目录下生成了两个文件:

  • hello.c(源代码,文本文件,你看得懂)

  • hello(编译后的可执行文件,机器码,电脑看得懂)

✅ 正确的运行命令

你应该运行编译后生成的 hello,而不是 hello.c

在终端输入:

按下回车,你就能看到输出 Hello, World! 了。


❓ 为什么会有“权限不够”的提示?

当你输入 ./hello.c 时,系统试图把 .c 文件当做程序来执行。

  • .c 文件默认没有“可执行权限”(它只是个文本),所以系统直接报错“权限不够”。

  • 就算你强行给 hello.c 加上可执行权限(chmod +x hello.c),系统也无法执行它,因为里面的内容是给人类看的C语言语法,不是CPU能直接识别的二进制机器码。系统会报错 ./hello.c: line 1: #include: command not found 之类的问题。


📌 总结一下日常操作命令

在终端里写C语言,永远记住这三步曲:

  1. 写代码gedit hello.c(或直接用VSCode写)

  2. 编译gcc hello.c -o hello(生成可执行文件)

  3. 运行./hello注意:不加 .c 后缀!

以后每次编译,都要记得 -o 后面跟着的名字和运行时的名字必须一致。如果编译时写成 gcc hello.c -o myapp,运行时就要敲 ./myapp

现在试一下 ./hello,肯定能成功运行!以后编译和运行就不会再搞混了。