2013-03-13 77 views
6

执行任何GCC编译C程序执行时,我已经从终端编译gcc任何C程序,我得到一个权限被拒绝的错误。拒绝了对OS X(10.8.2)山狮

要开始,我已经验证了我的驱动器(在此之前,同样的问题发生了什么)在修复权限。

为了说明和隔离问题,我会告诉你这个超简单的Hello World程序会发生什么情况(与其他程序,发生同样的事情):

#include <stdio.h> 

main() 
{ 
    printf("Hello World"); 
} 

现在,我这个保存到我的桌面为helloworld.c。在这一点上,从桌面上,一个ls -l回报:

total 8 
-rw-r--r-- 1 michael staff 56 Mar 13 14:08 helloworld.c 

然后,我gcc -c helloworld.c -o helloworld编译(我也试过没有-o标志具有相同的结果编译)。没有警告或错误。一个ls -l现在返回:

total 16 
-rw-r--r-- 1 michael staff 56 Mar 13 14:08 helloworld.c 
-rw-r--r-- 1 michael staff 724 Mar 13 14:16 helloworld.o 

试图执行的gcc的输出,具有./helloworld.o回报:

-bash: ./helloworld.o: Permission denied 

只是为了调试的缘故,如果我使用sudo(sudo ./helloworld.o)执行,则返回:现在

sudo: ./helloworld.o: command not found 

,如果我尝试设置使用chmod +x helloworld.o可执行的标志,如被推荐上了很多搜索的r esults我发现,ls -l回报:

total 16 
-rw-r--r-- 1 michael staff 56 Mar 13 14:08 helloworld.c 
-rwxr-xr-x 1 michael staff 724 Mar 13 14:16 helloworld.o 

但是,试图与./helloworld.o执行现在返回:

-bash: ./helloworld.o: Malformed Mach-o file 

现在,用于调试的缘故,where gcc回报:

/usr/bin/gcc 

所以,你可以看到我没有使用第三方gcc

有谁知道可能是什么问题?我尝试过四处搜寻,但找不到任何工作解决方案。我早些时候遇到过这个问题,并且自从刚刚重新安装OS X(出于不同的原因),并且仍然存在这样一个干净且有组织的开发环境的问题。作为参考,我使用的是OS X 10.8.2,并且具有Xcode 4.6以及最新版本的Xcode命令行工具(来自Apple的开发人员网站)。我没有从Homebrew或任何其他第三方来源安装gcc;它是Xcode命令行工具附带的gcc。

非常感谢您的帮助!我非常感谢您花时间阅读,诊断并提供帮助。 :)

+0

我有这个问题,当我做foobar.c foobar.c有错误的地方。当我修复错误时,它就起作用了。 – quantumpotato 2014-01-12 00:23:29

回答

10

你试图执行的目标代码(helloworld.o),而不是编译和链接的可执行二进制文件。不要使用-c选项。运行此代替:

$ gcc helloworld.c -o helloworld 

它将被创建与可执行权限。然后你可以运行。

$ ./helloworld 

正常。


这样做的原因是, -c选项告诉编译器只是 编译文件,但不 链接它。链接过程需要创建最终的可执行文件。如果您不提供 -c,gcc将在幕后为您编译和链接。

+0

这就是它!非常感谢你!只要系统允许,我会将您的回答标记为答案。 :) – 2013-03-13 21:36:17

+0

@MichaelI:没问题,这是一个很好的问题! – teppic 2013-03-13 21:41:05