error: /usr/include/stdio.h: Permission denied 的一种情况分析

代码:

  1. #include <stdio.h>
  2. int main(){
  3. printf ("hello long size %d\n",sizeof(long));
  4. }

很简单,测试是否能够编译通过
对比

  • 在root的用户下编译正常通过
  • 在其他用户测试不通过

    点击(此处)折叠或打开

    1. ~> gcc test.c
    2. test.c:1:19: error: /usr/include/stdio.h: Permission denied
    3. test.c: In function ‘main‘:
    4. test.c:5: warning: incompatible implicit declaration of built-in function ‘printf‘

尝试着解决问题

提示说是权限受限。
在root用户下看看stdio.h的属性

点击(此处)折叠或打开

  1. ll /usr/include/stdio.h
  2. -rw-r--r-- 1 root root 31144 2010-05-06 10:33 /usr/include/stdio.h

具有可读属性,但是用vim打开,显示是个 [new file], 为什么呢?
具有可读权限就是看不到文件!

给文档添加可执行权限,chmod +x /usr/include/stdio.h
问题如故

给link添加可执行权限,# find /usr/include/ -type l -exec ls -l {} \;
问题如故

去除link的可执行权限,# find /usr/include/ -type l -exec chmod -x  {} \;

给文件夹添加可执行权限,# find /usr/include/ -type d -exec chmod +x  {} \;
问题解决

分析
    我不明白,打开/usr/include/stdio.h 和其他文件夹的可执行权限有什么相关,因为/usr/include和/usr/include/stdio.h 都具有可行性,用户应该可以读取stdio.h文件才对啊。
   
这个情况出现在移植的过程中,为了防止不必要的麻烦,添加如下命令,chmod -R 755 /usr/include/

时间: 2024-10-10 23:49:40

error: /usr/include/stdio.h: Permission denied 的一种情况分析的相关文章

#include&lt;stdio.h&gt;的头文件的查找 #import&lt;Foundation/NSObjCRuntime.h&gt;头文件的查找 在Xcode下查找-城

1.Foundation框架下的头文件在Xcode下的路径: NSObjCRuntime.h的路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers 2.include文件夹下的头文件在Xcode下的路径: include下的stdio.h的

include stdio.h 什么意思

函数的使用都要进行定义和声明的:因为我们要使用的printf函数是系统定义好的函数,我们要使用这个函数要先定义声明,然后再去调用,#include指令就起到该作用 具体解释 .h是头文件,头文件是包含函数声明和定义的文件:你平时写C语言时,用到的printf() 和scanf()都是系统定义好的,而这些函数的定义就包含在stdio.h这个文件中! #include是编译预处理指令,就是在编译前将stdio.h这个文件里的函数都添加到你写的cpp文件中,然后参与编译,生成.obj文件.

include &lt;stdio.h&gt;

include int lastOdd(int p, int n){ for (int i = 0; i < n; i++) { if ((p + i) == 1) { return i; } } } void turnStaus(int p, int n, int index){ for (int i = index; i < n; i++) { if ((p + i)) { *(p + i) = 0; } else{ *(p + i) = 1; } } } int main(){ int

mac 无法ssh localhost,错误提示:bash: /usr/local/bin/ssh_session: Permission denied

在网上找了很久也没有找到解决方案,最后根据提示自己摸索如下: 1.编辑/etc/sshd_config文件,注释掉#ForceCommand /usr/local/bin/ssh_session 2.启动sshd服务:sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 3.停止sshd服务:sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist 4查

distcc (dcc_execvp) ERROR: failed to exec XX: Permission denied

首先先确保一下是不是能执行下面语句: # sudo -u nobody XX --version 如果能看见版本信息,则可以不用往下看. 再检查一下distccd.service # sudo cat distccd.service # /usr/lib/systemd/system/distccd.service[Unit]Description=Distccd A Distributed Compilation ServerAfter=network.target [Service]User

git error: unable to unlink old (Permission denied)

今天在使用Idea git切换分支的时候出现了这样的错误,会导致切换分支失败,强制切换的话,并没有成功,因为文件并没有成功切换, 经过搜索发现,可能是文件被某进程占用,没有释放掉,我怀疑是Idea的某个进程占用了,于是果断退出Idea,使用git bash 来切换分支, 成功了, 总结:在使用git遇到这样的问题时,首先考虑某个文件是不是被其他进程占用,如果占用,杀掉那个进程在check out,,

解决win10 报错 git pull error: cannot open .git/FETCH_HEAD: Permission denied

sh配置git 用户解决了 git config --list //查看当前的config配置 git config --global user.name "youruser" //修改用户名 git config --global user.email "你的邮箱" //修改为你的邮箱 原文地址:https://www.cnblogs.com/stillstep/p/10681637.html

Turbo C 编程中“Unable to open include file &#39;stdio.h&#39;”问题的解决

问题: 初学Turbo C,不知道为什么,每次写完一个程序要编译的时候,总出现Error: c:/**/**.c   Unable to open include file 'stdio.h'  为什么每次都打不开“stdio.h"呢?我看过了,它在Include文件下,好好的呀.也试过把下载并安装的其它的TurboC的Stdio.h文件 复制过来,还是没用... 解决方法: include <stdio.h>表示搜索stdio.h这个文件的路径在option中指定的位置 inclu

GNU Linux 64位系统中fatal error: stdio.h: 没有那个文件或目录的错误的解决方法

在64位系统中,编写一个C语言程序后,使用gcc进行编译时,出现了如下的错误: test.c:1:19: fatal  error: stdio.h: 没有那个文件或目录 #include <stdio.h> 针对以上的情况,对于在32环境下一般不会出现这个问题,因为已经把libc的头文件包括在系统中了,那么针对这样的情况,主要检查是否安装了完备的开发环境: build-essential package - Installs the following collection to compi