Home > mutter, programming > 为何编译时的头文件所在的目录也需要可执行权限?

为何编译时的头文件所在的目录也需要可执行权限?

  开发机是大家共用的,一人一个账号。刚才突然发现昨天还可以正常build的source code无法编译通过了。非常的纳闷,g++的输出如下:

common_conf.h:181:23: error: /usr/local/include/unistd.h: Permission denied
common_conf.h:182:26: error: /usr/local/include/sys/types.h: Permission denied

其实unistd.h根本不在/usr/local/include文件夹下面,第二,这个文件以及路径上都是由可读权限的。为何会出现Permission Denied呢?查看了/usr/local/目录下面的其他文件夹的属性以后,我猜是因为include没有可执行权限造成的这个错误。于是

chmod +x /usr/local/include

以后发现一切正常了。不过现在我还是不明白为何需要/usr/local/include有执行权限才可以正常编译下去,为何可读的权限不行。还有为何unistd.h不在/usr/local/include下的时候会出现读不到(这个时候是因为Permission Denied)而停止编译,但是这个文件明明可以在/usr/include下面找到的,实在有点想不明白。

Categories: mutter, programming Tags:
  1. No comments yet.
  1. No trackbacks yet.