在 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 程序的主要内容,如果未能解决你的问题,请参考以下文章