linux系统下的 C 编程,头文件相关;哪里找-> sys/types.h, sys/stat.h
2017-08-30 09:49
525 查看
KEYWORD : sys/types.h; sys/stat.h; linux; 头文件;reserve place; reserve place
在查看各种编程书,源代码的时候,个人经常遇到对源代码引用的头文件的困惑。
比如,对于
但是,如果遇到
要是再遇到这样的头文件:
那么,其实问题也很简单,到底linux下这些头文件都在哪里?
相信用linux 编程的同学们都是通过 GNU 工具链来编译链接源代码的。
比如
这种情况下,明明 helloworld.c 中是有
到目前为止我举了一个 /home/ 的例子,简单说明了一下我想说的 linux 不分区的目录结构,
以上说了这些,是为了对 linux 的这种目录结构产生一个感性的认识。
通过
然后马上执行
这就跟平台有关系了,以Ubuntu为例,在/usr/include/ 目录下,可以看到 “x86_64-linux-gnu/” 这个目录,其实 “sys/” 这个目录相关的头文件都在这下面
> 当然,不同的计算机不同,你有可能看到的是 “x386-linux-gnu/”
(↑可能写的不太准确,自己没有32位的电脑,网上看到路径,记不太清了);
> 在树莓派上,你看到的将会是“arm-linux-gnuea…/” 这个目录;
> 而在 cygwin on windows,就是直接的“sys/” 目录!
到目前为止,你应该是都知道说需要的 ISO C 和 POSIX 等 提供的 头文件到哪里去寻找了,
如果在看书、看代码看到一个不熟悉的 头文件,不清楚自己电脑上有没有…这个时候使用命令↓
如果有正确的输出,就可以知道我们可以大胆地将“[theHeadfileName].h” 这个头文件包含在代码中了。
2018/Jan/09 新增:
Mint LINUX 环境
安装 主机(本机)编译工具链
查看gcc 编译工具信息(的命令)
显示的信息
(个人理解(解释)补充)
———— END 新增 —————————–
在学习 linux 上实现 一个 daemon 程序时,看到的几个不熟悉的头文件,所以写了这篇 -> 怎么确定自己的编译环境有没有支持该头文件,把本人测试、修改过的 daemon 程序传到了CSDN资源中了,有兴趣的同学可以下载看看。
”
“一个可以在Cygwin on windows 和 Raspberry Pi 上 $make 通过的简单 daemon 例程
the end
在查看各种编程书,源代码的时候,个人经常遇到对源代码引用的头文件的困惑。
比如,对于
#include <stdio.h>;
#include <stdlib.h>;
#include <string.h>; 这种常见的头文件不以为然,自然如果编译的工具(链)没有问题,也就不会存在找不到头文件的情况。
但是,如果遇到
#include <unistd.h>;
#include <fcntl.h>这样的头文件就要想一想了,因为对于一个没怎么接触系统编程的人来说,实在是不熟悉这些头文件。
要是再遇到这样的头文件:
#include <sys/stat.h>;
#include <sys/types.h>; 这样的头文件更是容易出问题,因为 sys 目录下的头文件并未这么简单写就可以了。
那么,其实问题也很简单,到底linux下这些头文件都在哪里?
相信用linux 编程的同学们都是通过 GNU 工具链来编译链接源代码的。
比如
gcc helloworld.c -o helloworld像这样的命令应该是比较熟悉了。
这种情况下,明明 helloworld.c 中是有
#include <stdio.h>这个头文件的,而在编译链接命令中并没有体现出使用这个头文件的样子嘛…..
Linux的目录结构
根目录:
这一点要和linux 系统本身的目录结构有关系,我们知道使用 linux 一般来说是不会去关注磁盘分区的,所有的内容都在"/"这一 root 根目录下,
用户目录:
比如我们用户最直接使用的,就是/home/username/这一目录,它就是在根目录
"/"下的
"home"文件夹,而home文件夹下就是根据linux上可以有多个用户这个特点,按用户名,分为多个文件夹。如果你是 user1,那你就分的目录
"/home/user1/", 这时候,我们还可以发现在 “/home/user1/” 这个目录下,系统自动分配了 “Documents/”; “Music/”; “Downloads/”; …等等这类普通常用的文件夹。
到目前为止我举了一个 /home/ 的例子,简单说明了一下我想说的 linux 不分区的目录结构,
可执行二进制文件:
在 linux 下工作,那就不得不提命令command这个神奇的东西了,说几个常用的命令: ls, mkdir, rm, grep, ps… 这些命令,都被放在了根目录"/"的 “bin/” 目录下, 也就是 “/bin/” ;可以使用
$ls /bin<- 这个命令查看一下。
以上说了这些,是为了对 linux 的这种目录结构产生一个感性的认识。
应用程序:
那么同样,根目录"/"它也为所有的应用程序有关的单独分配了一个文件夹,那就是 “usr/” 文件夹。通过
$cd /usr可以到达该目录下。
用户安装程序:
之所以说”为应用程序有关“,那是因为这个目录下不单单只保存应用程序。我们通过命令#apt-get install application安装的应用程序,几乎都是安装在 “/usr/share/” 这个目录下,使用
$ls /usr/share/命令可以看到许多”文件夹“,其文件夹名对应的就是应用名。
用户(程序员)编写程序:
通过命令$cd /usr到达该目录下,
$ls -CF可以看到 “/usr/” 目录下的文件夹和文件,注意到有 “include/” 这个文件夹,这个文件夹就是这篇文件要介绍的重点了,他就是 linux 下,GNU 编译链接的 C标准库 和 系统调用 的所有 头文件的集合。
通过
/usr$cd include就可以进入到这个目录下了,
然后马上执行
/usr/include$ls -CF来看看这个文件夹下都放了什么…… 可以看到 stdio.h; stdlib.h; string.h… 等等这些熟悉头文件都在,等等,那前面说的 “sys/stat.h; sys/tpyes.h” 这类头文件在哪里?
这就跟平台有关系了,以Ubuntu为例,在/usr/include/ 目录下,可以看到 “x86_64-linux-gnu/” 这个目录,其实 “sys/” 这个目录相关的头文件都在这下面
> 当然,不同的计算机不同,你有可能看到的是 “x386-linux-gnu/”
(↑可能写的不太准确,自己没有32位的电脑,网上看到路径,记不太清了);
> 在树莓派上,你看到的将会是“arm-linux-gnuea…/” 这个目录;
> 而在 cygwin on windows,就是直接的“sys/” 目录!
到目前为止,你应该是都知道说需要的 ISO C 和 POSIX 等 提供的 头文件到哪里去寻找了,
如果在看书、看代码看到一个不熟悉的 头文件,不清楚自己电脑上有没有…这个时候使用命令↓
$find /usr/include/[theHeadfileName].h
如果有正确的输出,就可以知道我们可以大胆地将“[theHeadfileName].h” 这个头文件包含在代码中了。
2018/Jan/09 新增:
对 GNU 编译器 和 C标准库(包括其它库)的新了解
在学习交叉编译的时候,新了解到了一些跟编译工具链有关的知识(内容), 所以对博客做一次更新(补充)Mint LINUX 环境
安装 主机(本机)编译工具链
查看gcc 编译工具信息(的命令)
cpp -V $>/dev/null
显示的信息
(个人理解(解释)补充)
———— END 新增 —————————–
在学习 linux 上实现 一个 daemon 程序时,看到的几个不熟悉的头文件,所以写了这篇 -> 怎么确定自己的编译环境有没有支持该头文件,把本人测试、修改过的 daemon 程序传到了CSDN资源中了,有兴趣的同学可以下载看看。
”
“一个可以在Cygwin on windows 和 Raspberry Pi 上 $make 通过的简单 daemon 例程
the end
相关文章推荐
- Linux应用程序开发笔记->文件编程之系统调用方式相关函数
- Linux学习记录--文件管理相关系统编程
- linux系统编程之文件与IO(四):目录访问相关系统调用
- Linux学习记录--文件IO操作相关系统编程
- Linux学习记录--文件IO操作相关系统编程
- 头文件sys/types.h <sys/stat.h>
- linux系统编程之文件与IO:stat()系统调用获取文件信息
- /sys/stat.h 从linux系统中获取文件的属性
- Linux学习记录--文件管理相关系统编程
- Linux学习记录--文件IO操作相关系统编程
- linux系统编程之文件与IO(八):文件描述符相关操作-dup,dup2,fcntl
- Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
- linux嵌入式编程高手历程系列8-NFS网络文件系统配置方法
- Windows文件系统驱动程序编程相关链接
- Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
- 文件系统的相关编程(下)
- Linux下的C编程--文件系统编程
- Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】揭开Linux Proc文件系统的神秘面纱
- Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍