Linux下添加搜索路径


        对于搜索路径的添加,都可以在配置文件 /etc/profile中进行添加,添加后,需要输入命令使配置生效: source /etc/profile,然后重启(否则只在当前终端中有效,新开终端需要再次执行命令才生效)。

一、添加可执行程序路径

配置全局变量PATH,例如:

export PATH=/opt/opencv-3.4.2/bin:$PATH

二、添加动态库搜索路径

1、程序编译期动态库的搜索路径

配置全局变量LIBRARY_PATH,例如:

export LIBRARY_PATH=/opt/opencv-3.4.2/lib:$LIBRARY_PATH

2、程序运行期动态库的搜索路径

(1)在配置文件/etc/ld.so.conf中指定动态库搜索路径

在配置文件/etc/ld.so.conf增加指定动态库的搜索路径,例如:

include /etc/ld.so.conf.d/*.conf
# 新增的搜索路径
/opt/opencv-3.4.2/lib

或者在/etc/ld.so.conf.d目录下增加自定义名称的.conf文件,例如:
在这里插入图片描述

/opt/opencv-3.4.2/lib

添加后,需要执行ldconfig命令使修改后的配置生效。

(2)通过环境变量LD_LIBRARY_PATH指定动态库搜索路径

export LD_LIBRARY_PATH=/opt/opencv-3.4.2/lib:$LD_LIBRARY_PATH

说明:
/etc/profile中添加该命令,然后执行source /etc/profile将使配置全局生效。
如果在某个命令终端执行该命令,将使配置在该终端内生效。
技巧:
有时候并不希望配置影响到其他程序,可以使用另一种设置环境变量的方法,既在命令前加环境变量设置,该环境变量只对该命令有效,当该命令执行完成后,该环境变量就无效了,例如:

LD_LIBRARY_PATH=/opt/opencv-3.4.2/lib:$LD_LIBRARY_PATH /home/jaron/test

(3)在编译程序目标代码时指定动态库搜索路径

可以在编译目标代码时指定程序的动态库搜索路径,通过gcc的参数-Wl,-rpath指定,可以避免安装部署的麻烦。例如:

g++ main.cpp -lhello -L./ -Wl,-rpath=/opt/opencv-3.4.2/lib -o main

三、添加预处理C/C++时的包含目录

1、添加C路径

配置全局变量C_INCLUDE_PATH,仅对预处理C有效,例如:

export C_INCLUDE_PATH=/opt/opencv-3.4.2/include:$C_INCLUDE_PATH

2、添加C++路径

配置全局变量CPLUS_INCLUDE_PATH,仅对预处理C++有效,例如:

export CPLUS_INCLUDE_PATH=/opt/opencv-3.4.2/include:$CPLUS_INCLUDE_PATH

3、添加所有语言路径

配置全局变量CPATH,对所有语言均有效,例如:

export CPATH=/opt/opencv-3.4.2/include:$CPATH
<think>好的,我现在需要回答用户关于如何在Linux系统中配置共享库(.so文件)搜索路径的问题。用户提到了两种方法:使用LD_LIBRARY_PATH环境变量和修改/etc/ld.so.conf。我需要结合提供的引用内容,确保回答准确且符合当前Linux的最佳实践。 首先,根据引用[1],LD_LIBRARY_PATH是一种临时的方法,而修改/etc/ld.so.conf并运行ldconfig是更持久的方式。引用[2]提到在Ubuntu 9.04之后,LD_LIBRARY_PATH不能在.profile或/etc/profile中设置,必须使用/etc/ld.so.conf.d/*.conf文件。这说明在某些系统上,直接使用环境变量可能不再适用,用户需要调整配置方式。 接下来,我需要分步骤说明每种方法的具体操作,确保用户能清晰理解。例如,临时设置环境变量可以通过export命令,而永久设置可能需要添加到.bashrc或类似文件中。但根据引用[2],永久设置可能需要使用系统配置文件,而不是用户的环境变量文件。 然后,修改/etc/ld.so.conf或其下的子配置文件,之后运行ldconfig更新缓存。引用[3]中提到ldconfig会读取这些配置文件,并生成缓存,这样所有程序都能找到共享库。需要提醒用户每次修改后都要运行ldconfig。 另外,用户可能想知道哪种方法更推荐。根据引用[1]和[2],建议使用/etc/ld.so.conf.d/的方式,因为这是系统级的配置,适用于所有用户,且不受环境变量限制的影响。同时,需要指出LD_LIBRARY_PATH的潜在问题,比如在某些系统上的限制或可能引起其他依赖问题。 最后,生成相关问题需要考虑用户可能的后续疑问,比如如何验证路径是否生效、不同方法的优缺点、动态链接器的工作原理等。确保问题覆盖用户可能想深入了解的方面。</think>在Linux系统中配置共享库搜索路径主要有三种常用方法,以下为具体操作步骤及适用场景: ### 一、临时环境变量法(LD_LIBRARY_PATH) 1. **临时设置**: ```bash export LD_LIBRARY_PATH=/your/custom/path:$LD_LIBRARY_PATH ``` * 生效范围:当前终端会话 * 特点:立即生效但重启后失效,适合临时调试[^1][^2] 2. **永久设置(不推荐)**: ```bash echo 'export LD_LIBRARY_PATH=/your/custom/path:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc ``` * 注意:现代Linux系统(如Ubuntu 9.04+)可能禁用此方式[^2] ### 二、系统级配置法(/etc/ld.so.conf) 1. **创建配置文件**: ```bash sudo vim /etc/ld.so.conf.d/my_custom.conf ``` 添加内容: ``` /your/custom/path ``` 2. **更新缓存**: ```bash sudo ldconfig ``` * 特点:全局永久生效,需root权限[^1][^3] ### 三、编译时指定法(-rpath) 在编译程序时添加链接参数: ```bash gcc -Wl,-rpath=/your/custom/path -o myapp main.c ``` * 特点:二进制文件硬编码路径,适合程序私有库
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值