ldd显示可找到库但运行程序仍提示无法打开共享对象文件
解决OpenSSL库加载失败的方案
以下是针对问题的具体解决办法:
临时解决:sudo运行时传递环境变量
sudo默认会重置环境变量,导致你设置的LD_LIBRARY_PATH不生效,直接在sudo命令中指定即可:sudo LD_LIBRARY_PATH=/mnt/sda1/openssl ./a.out永久系统级配置
将OpenSSL库路径添加到系统动态链接库配置中,让系统永久识别:- 创建配置文件:
sudo echo "/mnt/sda1/openssl" > /etc/ld.so.conf.d/openssl-local.conf - 刷新动态链接缓存:
sudo ldconfig -v
完成后直接运行
sudo ./a.out即可。- 创建配置文件:
编译时嵌入库路径(推荐)
修改编译命令,添加-Wl,-rpath参数将库路径嵌入程序本身,这样运行时无需依赖环境变量:gcc tstsvr.c -I/mnt/sda1/openssl/include -L/mnt/sda1/openssl -Wl,-rpath=/mnt/sda1/openssl -lcrypto -lssl重新编译后,无论用普通用户还是sudo运行,程序都会自动查找指定路径的库。
检查文件权限
确保root用户能读取库文件和访问路径:sudo chmod a+r /mnt/sda1/openssl/libcrypto.so.81.1.1 /mnt/sda1/openssl/libssl.so.81.1.1 sudo chmod a+x /mnt/sda1/openssl
内容的提问来源于stack exchange,提问作者some user
相关产品推荐
相关产品推荐

