首页 文章

除了sudo之外,为什么clang无法在Mavericks的Mac下编译?

提问于
浏览
5

在我的mac上进行了最新的软件更新之后,我无法在没有sudo的情况下编译和链接c hello world程序 .

该程序(helloworld.cpp):

#include <iostream>

int main(){
  std::cout << "hello world\n";
  return 0;
}

调用:

clang++ helloworld.cpp

失败错误:

ld:无法写入输出文件:a.out用于体系结构x86_64 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

但如果我在sudo下这样做,

sudo clang++ helloworld.cpp

这里没有问题 .

可能导致此问题的原因,以及我如何解决此问题?


EDIT, again :答案结果证明不是像一些人建议的那样工作目录权限,而是与我的hello world程序的输出文件a.out相关联的权限 . 感谢Petesh的解决方案 .

3 回答

  • 3

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

  • 4

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

    尝试通过运行例如确保目录由您拥有/可写:

    sudo chown -R `whoami` .
    

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

    在某些情况下,这发生在之前没有必要的项目中的OSX更新/升级之后 .

  • 3

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

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

相关问题