linux编程头文件所在路径的问题

一、问题引入

1、头文件与库

当我们在PC主机linux环境下(如ubuntu),编写linux应用程序,然后利用gcc来编译。在源代码的开始位置会写入头文件,那是因为我们使用了系统提供的库函数,例如printf、open、read、write等等。我们会写入类似的内容:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
......

我们的应用程序代码编译过程大概是这样的:编译器根据头文件提供的库函数接口形式,来编译我们的代码(如果不知道调用库函数的形式,eg:参数个数、形式、返回值类型等,将无法对库函数调用的代码进行编译),然后生成目标文件;然后,再使用链接器将这个目标文件与系统库链接;最终生成我们需要的应用程序。所以,其实我们的代码包含了自己写的内容,还有系统为我们提供好的现成的库函数,整个结合起来才形成一个完整的程序。

库函数的头文件,在编译的时候被使用,而库函数的代码段(库文件),在链接的时候被使用。

example:

应用程序代码在使用一个系统调用的时候,例如printf()函数,需要指定包含的头文件stdio.h;另外,在链接的时候对应的链接libc.a(笔者电脑文件所在目录:/usr/lib/i386-linux-gnu/libc.a)。

总结一下,我们编写应用程序,需要使用linux系统提供的库函数。具体实现起来,需要头文件和库文件。头文件是需要我们编写应用程序的时候,在源文件开头添加的;而库文件则需要配置编译环境进行指定搜索目录。

2、头文件和库文件在哪儿?

编写linux本机的应用程序、目标开发板的应用程序以及目标开发板的驱动,都会使用库函数,那么这些情况的头文件和库文件在哪儿放着呢?

不知道这个问题,在编写代码时会有疑惑。比如说,编写目标开发板的应用程序时,使用了open、read、write等函数。于是,想在linux内核开发的源码包(驱动开发环境)里边找到这些函数的完整代码,或者降低要求,查看头文件里的函数声明。结果令人失望,找不到需要的头文件能提供这样的函数声明。这样造成我们不知道该如何使用这些库函数。

事实情况是,上边列出常见的3种编程情况,所使用的头文件和库文件位置都不一样。也就是说,上述3种编程情况,所使用的库函数调用有可能是相同的,但是库函数所在的头文件以及对应的库,所在的位置却不一样。所以,编写目标开发板的应用程序时,在内核开发的源码包(驱动开发环境)中,找不到我们需要的头文件。

下面,根据不同的编程情况,进行说明。

或者利用交叉编译工具arm-linux-gcc

时间: 2024-12-11 17:45:53

linux编程头文件所在路径的问题的相关文章

Linux C语言头文件搜索路径

本文介绍在linux中头文件的搜索路径,也就是说你通过include指定的头文件,linux下的gcc编译器它是怎么找到它的呢.在此之前,先了解一个基本概念. 头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了.头文件中一般放一些重复使用的代码,例如函数声明.变量声明.常数定义.宏的定义等等.当使用#include语句将头文件引用时,相当于将头文件中所有内容,复制到#include处.#include有两种写法形式,分别是: #include <> : 直接到系统指定

Linux学习笔记——例说makefile 头文件查找路径

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.一个较为复杂的例子 [代码仓库]--makefile-example 代码仓库位于bitbucket,可借助Tortoise

Linux下的头文件搜索路径

     对于以压缩包发布的软件,在它的目录下通常都有一个配置脚本configure,它的作用确定编译参数(比如头文件位置.连接库位置等),然后生成Makefile以编译程序.可以进入该软件的目录,执行"./configure --help"命令查看使用帮. 一个程序能正确编译.链接.运行需要满足3个条件:预处理时能找到头文件,连接时能找到库(静态库或动态库),运行时能找到库.下面介绍头文件的搜索路径 GCC 搜索头文件有三种策略: 1.内定搜索目录,这是编译器自身预设的目录.由于是内

Linux查看文件安装路径与文件所在路径

一.查看文件安装路径: 由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址). 这里以Oracle为例.比如说我安装了Oracle,但是不知道文件都安装在哪些地方.放在哪些文件夹里,可以用下面的命令查看所有的文件路径 在终端输入: whereis oracle 回车,如果你安装好了Oracle,就会显示文件安装的地址,例如我的显示(安装地址可能会不同) oracle: /usr/bin/oracle /usr/lib/oracle /usr/share/oracle /usr/

Linux C头文件查找与动态库搜索

一.编译程序时,头文件路径搜索 本文介绍在linux中头文件的搜索路径,也就是说你通过include指定的头文件,linux下的gcc编译器它是怎么找到它的呢.在此之前,先了解一个基本概念. 头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了.头文件中一般放一些重复使用的代码,例如函数声明.变量声明.常数定义.宏的定义等等.当使用#include语句将头文件引用时,相当于将头文件中所有内容,复制到#include处.#include有两种写法形式,分别是: #inclu

linux常用头文件及说明

linux常用头文件及说明 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言,assert(表达式)<glib.h>:GCC.GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数.使用glib只需要包含<glib.h><dirent.h>:GCC.文件夹操作函数.struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()等 <c

linux驱动程序头文件

1.编写任何驱动程序都必须带的头文件 #include <linux/module.h>:在编写任何模块都需要包含此头文件.该头文件自动包含了 <linux/version.h>头文件,该头文件包含了宏                                                                                                  MODULE_LICENSE("GPL")的定义. #include

eclipse C开发添加自己的头文件搜索路径

eclipse C开发添加自己的头文件搜索路径 eclipse编译C程序时提示: ..\src\main.c:8:21: fatal error: my_type.h: No such file or directory 如图: 需要添加自己的头文件的路径: 选中工程再右键点击,选择右键菜单的Propertise: C/C++ Build -> Settings -> Tool Settings -> Includes 点击添加的符号,会出现选择头文件的对话框,此时可以选择头文件或头文件

linux c 头文件

1 //1.Linux中一些头文件的作用: 2 #include <assert.h> //ANSI C.提供断言,assert(表达式) 3 #include <glib.h> //GCC.GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数 4 #include <dirent.h> //GCC.文件夹操作函数 5 #include <ctype.h> //ANSI C.字符测试函数.isdigit(),islower()等 6 #inc