在 Linux 终端中执行 C 程序

Posted

技术标签:

【中文标题】在 Linux 终端中执行 C 程序【英文标题】:Executing C program in Linux Terminal 【发布时间】:2012-03-06 15:26:25 【问题描述】:

我已经通过

从我的 UBubtu 10.10 终端编译了一个程序

gcc file_name.c -o new_file

命令。它编译成功,创建了一个名为 new_file 的可执行文件。但是当我试图通过这个命令执行它时

./new_file

它说 new_file 的权限被拒绝。我检查了该文件的权限属性,发现我有权读取和写入它(我是该系统的唯一用户)。你能帮我找出问题吗?

【问题讨论】:

您也需要权限才能执行它。执行:chmod +x newfile 在同一目录中。 gcc 应该使可执行文件,错误,可执行文件。你的umask是什么? 为什么不提高接受率?开始接受正确的回答者或社区将不再帮助您。 【参考方案1】:

你必须给它exe。权限。

所以:chmod +x new_file

当您使用 gcc 创建新文件时,默认情况下,这是不可执行的。所以,你必须给它执行权限。

使用chmod (see this) 可以更改文件的权限。

在这种特定情况下,您授予了该文件的执行权限(+ [加号] 表示已授予,'x' 表示执行)。

如果您想撤销该权限,您可以输入:chmod -x filename

【讨论】:

谢谢。但是请多解释一下这个命令吗? Linux(以及可能大多数类 Unix 系统)中的权限由三个位表示:R、W 和 X。如果文件设置了“R”权限位,则它是可读的。如果设置了“W”位,则它是可写的。如果设置了“X”位,则它是可执行的。与 Windows 不同,执行文件的能力是根据文件的扩展名确定的,在 Linux 中,您只需指定“X”标志即可使每个文件都可执行。三个权限位集可用:一个用于文件的所有者,第二个用于拥有该文件的组,第三个用于其他所有人。 "当你使用 gcc 创建一个新文件时,默认情况下这是不可执行的。" ??不,通常 gcc 会创建设置了 x 位的可执行文件。拉菲一定有一些奇怪的设置来抑制这一点。 是的,你是对的。我会说“你的 gcc”(我想是 umask).. 现在我会编辑 除了 umask 之外,还可能存在文件系统问题:FS 不支持 Unix 权限(例如 FAT、NTFS)或被配置为忽略它们。【参考方案2】:

编译后文件放在a.out 尝试使用a.out

【讨论】:

以上是关于在 Linux 终端中执行 C 程序的主要内容,如果未能解决你的问题,请参考以下文章

linux如何在终端启动程序后可以继续输入命令?

linux终端下如何进行C语言编译

Linux的终端怎么运行C语言

在Linux系统中,如何运行一个C语言程序?

如何在linux终端中查看C#程序的非零返回类型的值,其中mono用于运行C#代码?

linux 下运行C的程序,终端运行出现乱码,该怎么解决?!!