Mic*_*l I 6 c macos xcode gcc permission-denied
当执行我gcc从终端编译的任何C程序时,我得到一个权限被拒绝错误.
首先,我已经验证并修复了我的驱动器的权限(在此之前,同样的问题发生了).
为了说明和隔离问题,我将向您展示这个超简单的Hello World程序会发生什么(与其他程序一样,同样的事情发生):
#include <stdio.h>
main()
{
printf("Hello World");
}
Run Code Online (Sandbox Code Playgroud)
现在,我把它保存到我的桌面上helloworld.c.此时,从桌面ls -l返回:
total 8
-rw-r--r-- 1 michael staff 56 Mar 13 14:08 helloworld.c
Run Code Online (Sandbox Code Playgroud)
然后我编译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
Run Code Online (Sandbox Code Playgroud)
尝试执行gcc的输出,./helloworld.o返回:
-bash: ./helloworld.o: Permission denied
Run Code Online (Sandbox Code Playgroud)
只是为了调试,如果我用sudo(sudo ./helloworld.o)执行,它返回:
sudo: ./helloworld.o: command not found
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试设置可执行标志chmod +x helloworld.o,就像我发现的很多搜索结果所推荐的那样,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
Run Code Online (Sandbox Code Playgroud)
但是,尝试使用./helloworld.onow返回:
-bash: ./helloworld.o: Malformed Mach-o file
Run Code Online (Sandbox Code Playgroud)
现在,为了调试,where gcc返回:
/usr/bin/gcc
Run Code Online (Sandbox Code Playgroud)
所以,你可以看到我没有使用第三方gcc.
有谁知道可能是什么问题?我试过四处寻找,但我找不到任何有效的解决方案.我之前遇到过同样的问题,并且已经重新安装了OS X(出于不同的原因),并且仍然在干净有序的开发环境中遇到这个问题.作为参考,我使用的是OS X 10.8.2,并且拥有Xcode 4.6以及最新版本的Xcode Command Line工具(来自Apple的开发人员网站).我没有从Homebrew或任何其他第三方来源安装gcc; 它是Xcode Command Line工具附带的gcc.
非常感谢您的帮助!我非常感谢您花时间阅读,诊断并提供帮助.:)
tep*_*pic 12
您正在尝试执行目标代码(helloworld.o),而不是编译和链接可执行二进制文件.不要使用该-c选项.改为运行:
$ gcc helloworld.c -o helloworld
Run Code Online (Sandbox Code Playgroud)
它将使用可执行权限创建.然后你就可以跑了.
$ ./helloworld
Run Code Online (Sandbox Code Playgroud)
像平常一样.
-c选项告诉编译器只编译文件,但不链接它.需要链接过程来创建最终的可执行文件.如果你不提供-c,gcc将在幕后为你编译和链接.
| 归档时间: |
|
| 查看次数: |
21503 次 |
| 最近记录: |