报错
error while loading shared libraries: libpthread_rt.so.1: cannot open shared object file: No such file or directory 有没有库,find 查到查不到库,共享库路径没有指定
变量
PATH 保存可执行文件程序路径,
LIBRARY_PATH 是在程序编译期间查找动态链接库时指定的查找共享库的路径
LD_LIBRARY_PATH 环境变量主要是用于指定动态链接器(ld)查找ELF可执行文件运行时所依赖的动态库(so)的路径,其内容是以冒号分隔的路径列表 标准库路径/lib和/usr/lib中继续搜索有当程序所需的依赖库不是系统标准安装的库或对库的版本特定要求时,可以指定 LD_LIBRARY_PATH环境变量实现。LIBRARY_PATH 和LD_LIBRARY_PATH 共同点都是库的路径,而PATH是可执行文件的路径
LIBRARY_PATH 和 LD_LIBRARY_PAT H参数说明 LIBRARY_PATH is used by gcc before compilation 编译前LD_LIBRARY_PATH 编译后链接
GCC编译、链接生成可执行文件时,动态库的搜索路径就包含LIBRARY_PATH
链接生成二进制可执行文件后,运行该程序加载动态库文件时就会搜索包含LD_LIBRARY_PATH路径下的动态库
命令
ldd 命令
ldd 实际上并不加载共享库到内存中,它只是模拟了这一过程,因此不会改变系统的运行环境。此外,由于 ldd 依赖于动态链接器,它可能无法正确报告那些在运行时通过其他机制(如运行时链接器或其他程序)加载的共享库
查看可执行文件或库文件本身对所依赖的库的情况 ldd ~/myprogramldd(英文全拼:list dynamic dependencies)命令列出程序或库文件的动态依赖关系(所依赖的共享库列表ldd是个脚本 质是通过 ld-linux.so(elf 动态库的装载器)来实现type ldd file /usr/bin/ldd第1列:程序需要依赖什么库第2列:系统提供的与程序需要的库所对应的库第3列:库加载的开始地址
ld 命令
动态库搜索路径可以通过 ld --verbose
ldconfig命令
ldconfig是一个动态链接库管理命令,命令的用途,
主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,
搜索出可共享的动态链接库(格式如前介绍,lib*.so*),
进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,1.往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf文件的,但是添加完后需要调用下ldconfig,不然添加的library会找不到。2、如果添加的library不在/lib和/usr/lib里面的话,就需要修改/etc/ld.so.conf文件,往该文件追加library所在的路径,然后也需要重新调用下ldconfig命令。或者在/etc/ld.so.conf.d/下添加*.conf的文件并追加library的路径,然后执行ldconfig。比如在安装MySQL的时候,其库文件/usr/local/mysql/lib
ln 命令
3.ln [源文件/目录] [目标软链接] ln -s