linux系统下头文件、库文件搜索路径总结

一.头文件

1.1 gcc或g++找头文件有三种策略

1. 首先根据编译时-I指定路径搜索:

gcc test.c -I/tools/libevent/include -I../

2. 然后找gcc的环境变量:
C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH

#gcc找到头文件的路径
C_INCLUDE_PATH=/usr/include/libxml2:/MyLibPath
export C_INCLUDE_PATH
#g++找到头文件的路径
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/libxml2:/MyLibPath
export CPLUS_INCLUDE_PATH

linux添加头文件路径:
对所有用户有效在/etc/profile增加上面内容。
如果只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加上面的内容。

3. 最后找系统默认路径下的目录:

/usr/include
/usr/local/include //通常自己添加的头文件如.h或.hpp文件放在该路径下
/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.1 编译时查找库文件路径

1. 首先gcc会去找-L:

gcc test.c -L/tools/libevent/lib -L../

2. 然后再找gcc的环境变量LIBRARY_PATH:

动态链接库的路径:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/MyLib
export LD_LIBRARY_PATH

静态库的路径:
LIBRARY_PATH=$LIBRARY_PATH:/MyLib
export LIBRARY_PATH

linux添加库文件路径:
对所有用户有效在/etc/profile增加上面内容。
如果只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加上面的内容。

设置库文件路径后: gcc demo.c -o demo -levent 就可以了,而不需要-L指定库文件路径。
3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径:

echo "/usr/local/lib" >> /etc/ld.so.conf

将/usr/local/lib添加到/etc/ld.so.conf动态库搜索文件中。

4. 最后再找系统目录:

/lib
/usr/lib
/usr/local/lib //通常自己添加的库文件如.a或.so文件放在该路径下

2.2 运行时查找动态库文件路径

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

方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":“分隔)
方法三:配置文件/etc/ld.so.conf中指定的动态库搜索路径;
方法四:在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。这是通过gcc 的参数”-Wl,-rpath,“指定(如)。当指定多个动态库搜索路径时,路径之间用冒号”:"分隔)

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

2.3 动态库的搜索路径搜索的先后顺序

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tutu-hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值