gpt4 book ai didi

c - 权限被拒绝在 OS X (10.8.2) Mountain Lion 上执行任何 gcc 编译的 c 程序

转载 作者:太空狗 更新时间:2023-10-29 17:18:28 26 4
gpt4 key购买 nike

当从终端执行我用 gcc 编译的任何 C 程序时,我收到权限被拒绝的错误。

首先,我已经验证并修复了我的驱动器上的权限(在执行此操作之前,同样的问题发生了)。

为了说明和隔离问题,我将向您展示这个超简单的 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 设置可执行标志,正如我发现的很多搜索结果所推荐的那样,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。

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

最佳答案

您正在尝试执行目标代码 (helloworld.o) 而不是编译和链接可执行二进制文件。不要使用 -c 选项。改为运行:

$ gcc helloworld.c -o helloworld

它将以可执行权限创建。然后就可以运行了。

$ ./helloworld

正常。


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

关于c - 权限被拒绝在 OS X (10.8.2) Mountain Lion 上执行任何 gcc 编译的 c 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15396823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com