0
点赞
收藏
分享

微信扫一扫

c语言用gcc编译过后,执行 ./hello.c 报错 ./hello.c: 权限不够

错误再现:

命令行中执行:

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

按下回车,你就能看到输出 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,肯定能成功运行!以后编译和运行就不会再搞混了。

 



举报
0 条评论