linux下编译代码时的默认头文件路径

1  应用编程、驱动源代码中的头文件

1.1  应用编程中包含的头文件是应用层的头文件,是应用程序的编译器带来的 

1.1.1  编译windows下的应用程序时

        1)使用<>包含的头文件一般会先搜索-I选项后的路径(即用gcc编译时的-I选项),之后就是标准的系统头文件路径。
        2)而用""号包含的头文件会首先搜索当前的工作目录,之后的搜索路径才是和<>号包含的头文件所搜索的路径一样的路径。
        3)在linux系统中编译X86架构的程序时,一般默认标准的头文件路径为:

             如下是我在ubuntu下linux中,使用cpp -v,得到的默认头文件路径

             /usr/lib/gcc/x86_64-linux-gnu/5/include
             /usr/local/include
             /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
             /usr/include/x86_64-linux-gnu

             /usr/include

1.1.2  编译ARM架构的应用程序时

        1 ) 在linux系统中编译ARM 架构的程序时,一般默认标准的头文件路径为:

            如下是我在ubuntu下linux中,使用arm-hisiv300-linux-cpp -v,得到路径

              /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/include

              /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../target/usr/include

      

        2) 通过在makefile中使用-I等方式指定    

                见libjpeg库的移植

        3)比如在海思平台上,需要用交叉编译工具编译能在海思开发板上使用的应用程序,如下:

                #include <sys/stat.h>
                #include <sys/time.h>
                #include <fcntl.h>

                #include <errno.h>

               Linux命令行下使用find -name "stat.h" (注意:在最顶层的目录使用root用户权限搜索)

               ./opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/usr/include/sys/stat.h

        总结:不同版本的编译工具链,是对应自己的平台编写的,比如工具链里的一个可执行程序gcc,arm-hisiv300-linux、arm-x210-linux-gcc,安装工具链的时候,里面就有所有的编译时需要的头文件,编译时默认查找头文件的路径在你安装的地方,如上所述,所有我们在makefile里面要修改CC = arm-xxx-xxx等等,make的时候,才会使用我们指定的交叉编译工具链。        

1.2  编写驱动代码时的头文件

        (1)驱动源码属于内核源码的一部分,驱动源码中的头文件其实就是内核源代码目录下的include目录下的头文件。当我们#include时,自动会搜索到include下

        (2)比如驱动程序,那么所包含的头文件是在内核源码的安装目录下,即/usr/src/kernel/include,这时一般要在Makefile文件中指定内核源码目录,在编译时指定INCLUDE目录,看你自己解压后安装的目录

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页