linux下头文件及库文件搜索路径知识汇总

头文件搜索路径

系统默认搜索路径

/usr/include

跟gcc相关的搜索目录:

/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include

安装gcc时,如果有指定prefix的话,那么系统的默认搜索路径为:

/usr/include
prefix指定的路径/x86_64-redhat-linux/4.8.2/include

通过环境变量添加搜索路径

  1. C_INCLUDE_PATH:编译 C 程序的时候使用的环境变量
  2. CPLUS_INCLUDE_PATH:编译 C++ 程序的时候使用的环境变量
  3. CPATH:编译 C、 C++及Objective-C 程序时使用的环境变量
  4. OBJC_INCLUDE_PATH:编译 Objective-C 程序的时候使用的环境变量

编译时指定搜索路径

通过 gcc 的 -I 参数。

编译时搜索优先级

  1. 编译时指定搜索路径;
  2. 通过环境变量添加搜索路径;
  3. 系统默认搜索路径;

库文件搜索路径

系统默认搜索路径

/lib   
/usr/lib   

永久添加系统库文件搜索路径

  • 往/etc/ld.so.conf文件中添加需要搜索的路径,添加完后执行 ldconfig
  • 在/etc/ld.so.conf.d/ 目录下创建文件,文件中添加需要搜索的路径,添加完后执行ldconfig,如:
    [root@localhost ld.so.conf.d]# pwd  
    /etc/ld.so.conf.d  
    [root@localhost ld.so.conf.d]# ls   
    bind-export-x86_64.conf  kernel-3.10.0-1160.el7.x86_64.conf  mariadb-x86_64.conf   
    [root@localhost ld.so.conf.d]# cat mariadb-x86_64.conf  
    /usr/lib64/mysql
    

通过环境变量添加搜索路径

LIBRAY_PATH:用于在程序编译时告诉链接器ld,库的搜索路径。
LD_LIBRARY_PATH:用于在程序加载时告诉动态链接器,动态库的搜索路径。

编译时指定搜索路径

(1)通过 gcc 的 -L 参数指定库的搜索路径,这种方法是在程序链接成可执行文件时用。
(2)通过 gcc 的 -Wl,-rpath 参数指定库的搜索路径,这种方法在程序运行时,在指定的目录下搜索并加载相应的动态库。

搜索优先级

编译时搜索优先级

  1. gcc 的 -L 参数指定的库搜索路径;
  2. 通过环境变量添加搜索路径;
  3. 永久添加系统库文件搜索路径;
  4. 系统默认搜索路径目录: /lib -> /usr/lib;

运行时搜索优先级

  1. gcc 的 -Wl,-rpath 参数指定的库搜索路径;
  2. 通过环境变量添加搜索路径;
  3. 永久添加系统库文件搜索路径;
  4. 系统默认搜索路径目录: /lib -> /usr/lib;

相关知识点

ldconfig

在默认搜索目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库。
如:

ldconfig -v

ldd

可以查看软件依赖了哪些库, 如:

[root@localhost bin]# ldd grep
        linux-vdso.so.1 =>  (0x00007ffc4ffe3000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f2bca9e1000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f2bca613000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2bca3f7000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f2bcac43000)

修改环境变量

将目录/usr/local/lib添加到环境变量LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

通过环境变量添加的库搜索路径,系统重启将被清除,要想系统重启后仍然生效:
在/etc/profile文件中添加添加:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhjuan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值