linux下的头文件路径,linux下的头文件和库文件搜索路径 (转)

GCC 找头文件有三种策略:

1. 会在默认情况下指定到 /usr/include 文件夹 ( 更深层次的是一个相对路径, GCC 可执行程序的路径是 /usr/bin ,那么它在实际工作时指定头文件头径是一种相对路径方法,换算成绝对路径就是 /usr/include)

2.GCC 还使用了 -I 指定路径的方式,这一点大家都知道

3. 还可以使用一个参数来指示 GCC 不搜索系统默认路径,这个参数我忘了,你搜一下就知道了

(是: -nostdinc    选项 使编译器不再 系统缺省的头文件目录里面找头文件,一般和 -I 联合使用,明确限定头文件的位置。

-nostdin C++      规定不在 g++ 指定的标准路经中搜索,但仍在其他路径中搜索,.此选项 在创libg++库使用 )

在编译驱动模块时

,由于非凡的需求必须强制 GCC 不搜索系统默认路径,

也就是不搜索 /usr/include ,要自己用 -I

参数来指定内核头文件路径,这个时候必须在 Makefile 中指定两个参数,一个是内核头文件路径,一个是强制 GCC

不搜索系统默认路径。在编译内核时,必须使用一个参数 ( 强制 GCC 不搜索系统默认路径 ) ,否则就会引起混乱。

include的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。

**************************************************************************************************************************

a). 当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()

b). 写在specs内的

c). 后来用-D -I -L指定的

d). gcc环境变量设定(编译的时候)

e). ld.so的环境变量(这是run time的时候)

====================================================

====================================================

1.头文件

gcc 在编译时如何去寻找所需要的头文件 :

※所以header file的搜寻会从-I开始

※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH

※再找内定目录

/usr/include

/usr/local/include

/usr/lib/gcc-lib/i386-linux/2.95.2/include

/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g -3

/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include

库文件但是如果装gcc的时候,是有给定的prefix的话,那么就是

/usr/include

prefix/include

prefix/xxx-xxx-xxx-gnulibc/include

prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include

2.库文件

cos()等函式库的选项要多加 -lm

编译的时候:

※gcc会去找-L

※再找gcc的环境变量LIBRARY_PATH

※再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的

3.运行时动态库的搜索路径

方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径

方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)

方法三:在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。

这是通过gcc 的参数"-Wl,-rpath,"指定(如)。当指定多个动态库搜索路径时,路径之间用冒号":"分隔)

四:默认的动态库搜索路径/lib

五:默认的动态库搜索路径/usr/lib

可以通过执行可执行文件pos得到的结果不同获知其搜索到了哪个动态库,从而获得第1个动态库搜索顺序,然后删除该动态库,

再执行程序pos,获得第2个动态库搜索路径,再删除第2个被搜索到的动态库,

如此往复,将可得到Linux搜索动态库的先后顺序。

程序pos执行的输出结果和搜索到的动态库的对应关系如表1所示

程序pos输出结果 使用的动态库 对应的动态库搜索路径指定方式

./ ./libpos.so 编译目标代码时指定的动态库搜索路径

/root/test/env/lib /root/test/env/lib/libpos.so 环境变量LD_LIBRARY_PATH指定的动态库搜索路径

/root/test/conf/lib /root/test/conf/lib/libpos.so 配置文件/etc/ld.so.conf中指定的动态库搜索路径

/lib /lib/libpos.so 默认的动态库搜索路径/lib

/usr/lib /usr/lib/libpos.so 默认的动态库搜索路径/usr/lib

综合以上结果可知,动态库的搜索路径搜索的先后顺序是:

1.编译目标代码时指定的动态库搜索路径;

2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;

4.默认的动态库搜索路径/lib;

5.默认的动态库搜索路径/usr/lib。

C/C++ 头文件以及库的搜索路径

关键点: 1. #include <...> 不会搜索当前目录 2. 使用 -I 参数指定的头文件路径仅次于 搜索当前路径. 3. gcc -E -v 可以输出头文件路径搜索过程 C++编 ...

linux下编译时的默认库和头文件搜索路径

链接库路径 默认的链接库路径,定义在搜索/etc/ld.so.conf下的一些路径,其包含了一些重要的系统位置:LIBRARY_PATH, 但如果定义了LD_LIBRARY_PATH, 动态库的搜索路 ...

linux下gcc默认搜索头文件及库文件的路径

一.头文件gcc 在编译时如何去寻找所需要的头文件:※所以header file的搜寻会从-I开始※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC ...

linux下gcc默认搜索的头文件及库文件路径

转自:https://blog.csdn.net/fd315063004/article/details/7925854 一.头文件 gcc 在编译时如何去寻找所需要的头文件:※所以header fi ...

linux 头文件和库文件的设置

GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里说明一下系统自动搜索的路径. [1]include头文件路径 除了默认的/us ...

linux gcc 编译时头文件和库文件搜索路径

一.头文件    gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INC ...

gcc编译时头文件和库文件搜索路径

特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始( ...

linux下使用libxml2实现对xml文件的读取及查询

由于项目需要,这两天在用C++做XML文件解析的工作.在linux下有个很方便的操作xml文件的库——libxml2,它提供了一套创建和查询xml文件的C语言的接口.这篇博客主要介绍如何使用libxm ...

&period;h头文件 &period;lib库文件 &period;dll动态库文件之间的关系

.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...

随机推荐

nodeType的意思

nodeType是用来获得当前节点对象的类型.nodeType 属性可返回节点的类型.元素element   1   属性attr   2   文本text   3   注释comments   8 ...

点击其它地方DIV隐藏

$(document).bind('click',function(e){ var e = e || window.event; //浏览器兼容性 var elem = e.target || e.s ...

EDA技术与ASIC设计和FPGA开发有什么关系?FPGA在ASIC设计中有什么用途?

利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC的设计和实现:FPGA和CPLD是实现这一途径的主流器件.FPGA和CPLD通常也被称为可编程专用IC,或可编程ASIC.FPGA和C ...

【bzoj2104】 K-th Number

http://poj.org/problem?id=2104 (题目链接) 题意 求区间第k大数. Solution1 主席树裸题. 主席树当时我学是学的要死,那个时候不晓得百度出什么bug了,搜个主 ...

Controller 接口控制器详解

Controller 控制器,是 MVC 中的部分 C,为什么是部分呢?因为此处的控制器主要负责功能处理部分:1.收集.验证请求参数并绑定到命令对象:2.将命令对象交给业务对象,由业务对象处理并返回模 ...

IOS-用动画组制作花瓣掉落效果(另附iOS动画图表)

重要的两个方法:1.动画的数组:animations 2.启动的时间 beginTime 注意:动画组设置了持续时间(duration)可能会导致动画组里面的持续时间不管用 代码如下: #import ...

opencv-python 学习笔记2:实现目光跟随(又叫人脸跟随)

如果机器人的脸能随着前方人脸而转动,你会不会觉得这种互动很有意思.年前的时候,学习了一下opencv,通过opencv可以简单的实现人脸跟随.再加上几个舵机控制头部转动,机器人就可以互动了.呵呵 这里 ...

石子合并(NOI1995)

石子合并(NOI1995) 时间限制: 1 Sec  内存限制: 128 MB提交: 90  解决: 48[提交][状态][讨论版] 题目描述 在操场上沿一直线排列着 n堆石子.现要将石子有次序地合并 ...

Chrome插件触发web页面的事件

Chrome插件中不能直接调用Web页面的元素js,原因是chrome插件的机制http://stackoverflow.com/questions/17819344/triggering-a-cli ...

Hadoop-1&period;2&period;1伪分布下 hive-0&period;10&period;0内嵌模式安装

Hadoop-1.2.1伪分布下 hive-0.10.0内嵌模式安装 1.下载hive-0.10.0 网址是:http://archive.apache.org/dist/hive/hive-0.10 ...

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 智慧社区背景与挑战 随着城市化的快速发展,社区面临健康、安全、邻里关系和服务质量等多方面的挑战。华为技术有限公司提出智慧社区解决方案,旨在通过先进的数字化技术应对这些问题,提升城市社区的生活质量。 2. 技术推动智慧社区发展 技术进步,特别是数字化、无线化、移动化和物联化,为城市社区的智慧化提供了可能。这些技术的应用不仅提高了社区的运行效率,也增强了居民的便利性和安全性。 3. 智慧社区的核心价值 智慧社区承载了智慧城市的核心价值,通过全面信息化处理,实现对城市各个方面的数字网络化管理、服务与决策功能,从而提升社会服务效率,整合社会服务资源。 4. 多层次、全方位的智慧社区服务 智慧社区通过构建和谐、温情、平安和健康四大社区模块,满足社区居民的多层次需求。这些服务模块包括社区医疗、安全监控、情感沟通和健康监测等。 5. 智慧社区技术框架 智慧社区技术框架强调统一平台的建设,设立数据中心,构建基础网络,并通过分层建设,实现平台能力及应用的可持续成长和扩展。 6. 感知统一平台与服务方案 感知统一平台是智慧社区的关键组成部分,通过统一的RFID身份识别和信息管理,实现社区服务的智能化和便捷化。同时,提供社区内外监控、紧急救助服务和便民服务等。 7. 健康社区的构建 健康社区模块专注于为居民提供健康管理服务,通过整合医疗资源和居民接入,实现远程医疗、慢性病管理和紧急救助等功能,推动医疗模式从治疗向预防变。 8. 平安社区的安全保障 平安社区通过闭路电视监控、防盗报警和紧急求助等技术,保障社区居民的人身和财产安全,实现社区环境的实时监控和智能分析。 9. 温情社区的情感沟通 温情社区着重于建立社区居民间的情感联系,通过组织社区活动、一键呼叫服务和互帮互助平台,增强邻里间的交流和互助。 10. 和谐社区的资源整合 和谐社区作为社会资源的整合协调者,通过统一接入和身份识别,实现社区信息和服务的便捷获取,提升居民生活质量,促进社区和谐。
### 回答1: 在 Linux 系统中,可以通过设置环境变量来添加公用文件路径。 在 Bash 终端中,可以使用 export 命令设置环境变量。 例如添加 /usr/local/include 路径,可以在终端中运行: ```bash export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include ``` 你也可以在 .bashrc 或者 .bash_profile 中添加上面的语句,然后保存, 这样每次打开终端都会自动执行这个语句,就可以每次都加上这个路径了 除此之外,还有其他方式,比如在 Makefile 中添加 -I/usr/local/include 选项,或者在 IDE 里面设置文件路径等。 ### 回答2: 在Linux系统中,要添加公用文件路径,可以通过以下步骤进行: 1. 打开终端并进入命令行界面,使用管理员权限登录。 2. 首先确定要添加的公用文件路径,例如 "/usr/local/include"。 3. 打开 "/etc/profile" 文件,可使用任何文本编辑器进行编辑,例如命令 "sudo vi /etc/profile"。 4. 在文件中找到并定位到环境变量 "PATH"。 5. 在 "PATH" 变量的最后添加该公用文件路径,以冒号(:)分隔,例如:PATH=$PATH:/usr/local/include。 6. 保存文件并退出编辑器。 7. 为了使更改生效,需要使用 "source" 命令重新加载环境变量,命令为:source /etc/profile。 8. 现在,您可以在终端或任何编译器中使用添加的公用文件路径进行编译和运行程序了。 此外,如果您只想在特定用户的环境变量中添加公用文件路径,可以使用以下步骤: 1. 打开终端并进入命令行界面,用普通用户登录。 2. 打开用户的 ".bashrc" 文件,可以使用任何文本编辑器进行编辑,例如命令 "vi ~/.bashrc"。 3. 在文件的末尾添加以下行:export PATH=$PATH:/usr/local/include。 4. 保存文件并退出编辑器。 5. 为了使更改生效,可以关闭终端并重新打开或使用 "source" 命令重新加载用户的 ".bashrc" 文件,命令为:source ~/.bashrc。 6. 现在,您只能在该特定用户的环境变量中使用添加的公用文件路径进行编译和运行程序。 以上就是在Linux系统中添加公用文件路径的方法。请根据自己的实际需求选择适合的方法。 ### 回答3: 在Linux中,要添加公用文件路径,可以通过修改环境变量来实现。 首先,打开终端窗口并登录到Linux系统。然后,通过编辑用户的个人shell配置文件(例如~/.bashrc或~/.bash_profile)来设置环境变量。 使用文本编辑器打开配置文件,例如运行以下命令来编辑~/.bashrc文件: $ vi ~/.bashrc 在文件的末尾添加以下代码行,将公用文件路径添加到环境变量中: export C_INCLUDE_PATH=/path/to/include:$C_INCLUDE_PATH 请将/path/to/include替换为实际的公用文件路径。 保存并关闭文件后,运行以下命令以使配置文件生效: $ source ~/.bashrc 现在,您已成功将公用文件路径添加到环境变量中。 要验证路径是否已正确添加,可以运行以下命令来显示环境变量的值: $ echo $C_INCLUDE_PATH 如果您看到输出中包含已添加的路径,则意味着路径已成功添加。 现在,无论您在终端窗口中执行何种编译工作,系统都将在该路径中查找文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值