【发布时间】:2016-01-01 21:08:33
【问题描述】:
背景
我创建了一个简单的 Hello World C++ 程序:
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}
并像这样用clang++编译它(g++显然指向OS X上的clang++):
g++ helloworld-cpp.cpp
这会产生一个可执行文件a.out。在提示符下运行会导致bash抛出错误Operation not permitted,如图:
$ ./a.out
-bash: ./a.out: Operation not permitted
我尝试过的事情
-
使用
ls -leO验证文件是否具有执行权限,并且没有阻止其运行的属性或标志:-rwxr-xr-x 1 monarch staff - 15212 Jan 1 13:51 a.out 从恢复操作系统终端使用
csrutil disable禁用“系统完整性保护”,重新启动、重新编译和运行a.out。结果相同的错误消息。
问题
是否有任何其他限制会阻止我在 Mac OS X 上编译的二进制文件运行?
【问题讨论】:
-
“不允许操作”可能与不可用的共享库之类的东西有关。 [而 g++ 指向 clang++,而不是 llvm,尽管确实,clang 确实使用 llvm 来生成机器代码——我知道,细节,但仍然是正确的细节]
-
sudo chmod u+x a.out? -
@VioletGiraffe:呃,
ls -l的结果表明该文件对所有人都是可执行的…… -
您是否尝试过在终端中首先运行
xcode-select --install?虽然可能不是问题... -
您不在使用
noexec挂载的文件系统上吗?
标签: c++ osx-elcapitan clang++