原创 嵌入式Linux程序中头文件包含问题

2009-7-15 15:52 6450 8 8 分类: MCU/ 嵌入式

                                         嵌入式Linux程序中头文件包含问题
如程序中包含下面的头文件:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <signal.h>
#include <time.h>
#include <errno.h>
#include <linux/rtc.h>
...
         笔者刚开始接触时,走了弯路,看到内核目录下有include的地方就一个一个挨着找,后来发现自己真是好有耐心的笨,没想明白就动手找。在阅读Linux内核程序和驱动程序时,遇到像上面的头文件时就分不清这些头文件是在哪个目录下,编译时是到哪个目录下找到的,为什么有的是#include <unistd.h>,而有的有加了linux或sys,如#include <linux/rtc.h>和#include <sys/ioctl.h>,抱着知其然知其所以然的学习态度,我终于还是知道了这些头文件的所在目录。
        嵌入式开发前,需要在宿主机上搭建嵌入式交叉编译环境,主要是交叉编译器的安装,涉及到多个软件的安装,可以从ftp://gcc.gnu.org/pub/下载包括binutils、gcc、glibc、等软件,其中binutils主要用于生成一些辅助工具,如objdump、as、ld等,gcc是用来生产交叉编译器,主要生成arm-linux-gcc交叉编译工具(应该说,生成此工具后已经搭建起了交叉编译环境,可以编译Linux内核了,但由于没有提供标准用户函数库,用户程序还无法编译),glibc主要是提供用户程序所使用的一些基本的函数库。安装好这些交叉编译环境就搭建起来了。但是搭建交叉编译环境是比较复杂的,很多步骤都涉及到对硬件平台的选择,还必须不断测试才能保证使用过程中不出现问题。
        我使用的是友善之臂提供的arm-linux-gcc-4.3.2交叉编译器,使用tar -zxvf arm-linux-gcc-4.3.2.tgz -C /后在系统的/usr/local/arm/下多了4.3.2目录,该目录包含交叉编译安装后的文件和目录,在目录/usr/local/arm/4.3.2//arm-none-linux-gnueabi/libc/usr/include/下包含了所有的头文件。


         也许有人要问,知道这些头文件有什么用?有时我们在编写或者阅读Linux代码是,会经常碰到包含某个文件后,会使用一些“看似”是该文件中的宏、结构体或其它数据结构等,为了能够具体的查看该文件中什么的宏和数据结构等,如查找一个结构体总得各个变量然后为我所用,那就非常有必要知道找到该头文件了。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条