为什么clang ++在Mavericks下无法在Mac上编译,除了使用sudo?

在我的Mac上进行了最新的软件更新之后,我无法编译和链接没有sudo的c ++ hello world程序。

该程序(helloworld.cpp):

#include <iostream>

int main(){
  std::cout << "hello worldn";
  return 0;
}

调用:

clang++ helloworld.cpp

失败,错误:

ld:无法写入输出文件:体系结构x86_64的a.out clang:error:linker命令失败,退出代码1(使用-v查看调用)

但如果我在sudo下执行此操作,

sudo clang++ helloworld.cpp

这里没有问题。

什么可能导致这种情况,我该如何解决这个问题?


编辑,再次 :答案结果不是工作目录权限,如几个人建议,但与我的世界你好世界计划的输出文件,a.out相关的权限。 感谢Petesh提供的解决方案。


您必须坐在用户不可写入的目录中。 看看pwdls -ld . 查看您的位置以及权限。 尝试通过touch foo.txt在您运行Clang的同一目录中创建一个空文件。


最有可能的答案是当你的当前工作目录不是你有权写入的目录时,你正在运行clang ++。

尝试确保目录由您拥有/写入,例如运行:

sudo chown -R `whoami` .

(请注意,这可能不合适,具体取决于您所在的目录)。

在某些情况下,这种情况发生在OSX更新/升级之前的项目中,并非必要。


您可能以根用户身份运行gcc(通过sudo),因此生成的a.out文件由root拥有。 所以只要删除它,问题就会消失。

你为什么这么做? 因为恼人的是,xcode让你运行它来同意许可协议!

链接地址: http://www.djcxy.com/p/15143.html

上一篇: Why would clang++ fail to compile on a Mac, under Mavericks, except with sudo?

下一篇: Is this c++ template code valid? g++ compiles it but clang won't