2012-02-15 135 views
6

执行C程序我从Ububtu 10.10终端通过在Linux终端

gcc file_name.c -o new_file

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

./new_file 

它说权限被拒绝new_file。我已检查该文件的权限属性,发现我有权读取&(写入该系统的唯一用户)。你能帮我弄清楚这个问题吗?

+1

您还需要执行权限。做:'chmod + x newfile'在同一个目录下。 – ArjunShankar 2012-02-15 09:32:30

+2

'gcc'应该使可执行文件,错误,可执行文件。你的umask是什么? – 2012-02-15 09:35:28

+0

你为什么不增加你的接受率?开始接受正确的动物或社区不会再帮助你。 – DonCallisto 2012-02-16 08:07:36

回答

11

你必须给它exe。权限。

所以:chmod +x new_file

当你创建你的GCC一个新的文件,默认情况下,这是不可执行的。所以,你必须给它执行的权限。

With chmod(see this)您更改文件的权限。

在该特定情况下,您将执行权限(+ [加]意味着给予,'x'表示执行)给该文件。

如果要撤销该许可,您可以键入:chmod -x filename

+0

谢谢。但是请多解释一下这个命令? – 2012-02-15 09:41:16

+1

Linux中的权限(也可能是大多数类Unix系统)由三位表示:R,W和X.如果文件具有'R'权限位,则它是可读的。如果'W'位被设置,它是可写的。如果'X'位被设置,它是可执行的。与Windows不同的是,根据文件的扩展名,可以执行文件的能力,在Linux中,只需指定“X”标志即可使每个文件都可执行。有三个权限位集可用:一个用于文件所有者,第二个用于拥有该文件的组,第三个用于其他人。 – 2012-02-15 09:55:37

+1

“当您使用gcc创建新文件时,默认情况下,这是不可执行的。” ??不,通常gcc会创建x位设置的可执行文件。拉菲必须有一些奇怪的设置来抑制这一点。 – 2012-02-15 12:12:28

-1

编译之后,该文件被放置在a.out 尝试使用a.out

+5

不使用-o new_file时 – hroptatyr 2012-02-15 13:45:15