LD_LIBRARY_PATH vs LIBRARY_PATH

本文解释了GCC在编译过程中如何使用LIBRARY_PATH搜索库文件,以及程序运行时如何通过LD_LIBRARY_PATH查找库。重点阐述了两个环境变量在不同阶段的作用。

LIBRARY_PATH is used by gcc before compilation to search for directories containing libraries that need to be linked to your program.

LD_LIBRARY_PATH is used by your program to search for directories containing the libraries after it has been successfully compiled and linked.

### LD_LIBRARY_PATH=$dirname:$LD_LIBRARY_PATH 和 export LD_LIBRARY_PATH 的作用 `LD_LIBRARY_PATH` 是一个环境变量,用于指定系统在运行时搜索共享库(`.so` 文件)的路径。当程序运行时需要加载共享库,系统会在 `LD_LIBRARY_PATH` 指定的路径中查找这些库。 `LD_LIBRARY_PATH=$dirname:$LD_LIBRARY_PATH` 的作用是将 `$dirname` 所代表的目录添加到 `LD_LIBRARY_PATH` 环境变量的前面。这样,系统在搜索共享库时会优先在 `$dirname` 目录中查找,然后再去 `LD_LIBRARY_PATH` 中其他已有的目录查找。`$dirname` 通常代表当前脚本所在的目录或者某个特定的目录。 `export LD_LIBRARY_PATH` 用于将 `LD_LIBRARY_PATH` 环境变量导出,使其对当前 shell 及其子进程可见。通过 `export` 添加的环境变量仅针对当前运行 shell 生效,退出后被重置,而且重新启动的 shell 也不会继承[^2]。 ### 可能出现 signal 11 错误的解决办法 在 CoppeliaSim 运行时,signal 11 错误通常表示段错误,可能是由于运行时库路径设置问题导致程序无法正确加载所需的共享库。以下是一些可能的解决办法: #### 1. 临时设置 `LD_LIBRARY_PATH` 可以在运行 CoppeliaSim 之前,临时设置 `LD_LIBRARY_PATH` 环境变量,确保系统能够找到所需的共享库。例如: ```bash LD_LIBRARY_PATH=/path/to/coppeliasim/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH ./coppeliasim.sh ``` 这里 `/path/to/coppeliasim/lib` 是 CoppeliaSim 共享库所在的目录。 #### 2. 修改 `coppeliasim.sh` 文件 在 `coppeliasim.sh` 文件中设置 `LD_LIBRARY_PATH` 环境变量。可以在文件开头添加以下代码: ```bash #!/bin/bash # 得到当前输入参数的父级路径 PARAMETER_PATH=`dirname $0` # 设置 LD_LIBRARY_PATH LD_LIBRARY_PATH=$PARAMETER_PATH:$LD_LIBRARY_PATH export LD_LIBRARY_PATH ``` 这样,每次运行 `coppeliasim.sh` 脚本时,都会自动设置正确的 `LD_LIBRARY_PATH`。 #### 3. 检查库文件是否存在 确保 CoppeliaSim 所需的共享库文件存在于指定的目录中。可以使用 `ls` 命令检查: ```bash ls /path/to/coppeliasim/lib ``` 如果某些库文件缺失,可能需要重新安装 CoppeliaSim 或者检查安装过程中是否出现问题。 #### 4. 避免版本冲突 如之前提到的,CoppeliaSim 自带了适配的 Qt 版本,安装的 Qt 版本可能与 CoppeliaSim 自带的 Qt 库版本不同,导致版本不兼容无法执行。可以在 `coppeliasim.sh` 中删除 `LD_LIBRARY_PATH` 路径,只留下目录路径,以确保使用的是 CoppeliaSim 自带的适配 Qt 版本。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值