为什么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提供的解决方案。
您必须坐在用户不可写入的目录中。 看看pwd
和ls -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