在Linux终端中执行C程序

7

我从我的Ubuntu 10.10终端编译了一个程序,使用以下命令:

gcc file_name.c -o new_file

它成功编译并创建了一个名为new_file的可执行文件。但是当我尝试通过以下命令执行它时:

./new_file

提示说新文件没有权限。我已经检查了该文件的权限属性,发现我有读写权限(我是该系统的唯一用户)。你能帮助我找出问题吗?


1
您需要执行权限。在相同的目录下执行 chmod +x newfile - ArjunShankar
2
gcc 应该生成可执行文件,那么你的 umask 是多少? - CB Bailey
为什么不提高您的接受率呢?开始接受正确的答案,否则社区将不再帮助您。 - DonCallisto
2个回答

12

你需要给它赋予可执行权限。

所以: chmod +x new_file

当你使用gcc创建一个新文件时,默认情况下它是不可执行的。因此,你需要给它赋予可执行权限。

使用 chmod (参见此) 命令可以更改文件权限。

在这种特定情况下,你给了这个文件执行权限(+ [plus] 表示赋予,'x' 表示可执行)。

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


谢谢。但是您能否再解释一下这个命令的具体作用呢? - Rafi Kamal
1
Linux中(以及可能大多数类Unix系统中)的文件权限由三个位表示:R、W和X。如果一个文件有“R”权限位设置,它是可读的。如果设置了“W”位,则为可写的。如果设置了“X”位,则为可执行的。与Windows不同,在Linux中,可以通过指定“X”标志使每个文件都可执行。有三个权限位集可用:一个是文件所有者的,第二个是拥有该文件的组的,第三个是其他所有人的。 - Daniel Kamil Kozar
1
当您使用gcc创建新文件时,默认情况下该文件不可执行。不,通常情况下,gcc会创建带有x位设置的可执行文件。Rafi可能有一些奇怪的设置阻止了这一点。 - Jens Gustedt
是的,你说得对。我会说“你的gcc”(通过umask,我想)..现在我会编辑。 - DonCallisto
1
除了umask之外,可能还存在文件系统问题:要么该文件系统不支持Unix权限(例如FAT、NTFS),要么已配置为忽略它们。 - A.H.

-1

编译后,文件会被放置在a.out中。尝试使用a.out


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接