linux指定运行so文件,linux – 强制二进制文件使用特定(较新)版本的共享库(.so)...
我有一个较旧的二进制可执行文件(utserver,闭源),我试图在运行Fedora 22的系统上运行.
utserver想要openssl_1.0.0 – F22提供openssl_1.0.1k
我做了两个符号链接:
$sudo ln -s /usr/lib64/libssl.so.1.0.1k /usr/lib64/libssl.so.1.0.0
$sudo ln -s /usr/lib64/libcrypto.so.1.0.1k /usr/lib64/libcrypto.so.1.0.0
但是试图运行utserver抱怨库版本:
$./utserver
./utserver: /lib64/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ./utserver)
./utserver: /lib64/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ./utserver)
好的,所以它正在寻找一个版本字符串.我编辑了utserver ELF将字符串OPENSSL_1.0.0更改为OPENSSL_1.0.1,但是我得到了同样的错误(找不到’OPENSSL_1.0.1′)
objdump和readelf都在libssl.so.1.0.1的版本区域中显示OPENSSL_1.0.1:
$objdump -p /lib64/libssl.so.1.0.1 | grep OPENSSL
3 0x00 0x066a2b21 OPENSSL_1.0.1
4 0x00 0x02b21533 OPENSSL_1.0.1_EC
0x02b21533 0x00 07 OPENSSL_1.0.1_EC
所以现在我对utserver实际检查的内容感到困惑.我怀疑它看到了OPENSSL_1.0.1_EC并且失败了.如果我在ELF中添加_EC,我会得到一个段错误,大概是因为现在我的偏移都是错误的.
$readelf -d ./utserver
readelf: Error: Unable to seek to 0x15da90000000 for string table
readelf: Error: no .dynamic section in the dynamic segment
Dynamic section at offset 0x154fb8 contains 34 entries:
有没有办法告诉ld-linux强制加载OPENSSL_1.0.1_EC和/或修改ELF偏移的引用?非常感谢.
是的,我知道我可以在某个地方找到openssl_1.0.0的打包版本,但是如果我不需要的话,这是一个我不想恢复的库.
解决方法:
Is there any way to tell ld-linux to force load OPENSSL_1.0.1_EC
没有.
符号版本已更改的原因有:旧符号和新符号不是ABI-compatible.您必须重新编译可执行文件才能使用新符号,或者(更简单)您必须提供libssl.so.1.0.0(可以是安装并与已安装的libssl.so.1.0.1k共存.
that’s one library I’d rather not revert if I don’t have to.
您不必还原任何内容(并且还原将会破坏所有需要新版本的程序).
简单地从旧包中提供libssl.so.1.0.0将使旧程序(需要它)使用该文件,而新程序(需要libssl.so.1.0.1k)将继续使用libssl.so.1.0 .1k.
标签:linux,shared-libraries,dynamic-linking,elf,ldd
来源: https://codeday.me/bug/20190628/1315035.html
linux指定运行so文件,linux – 强制二进制文件使用特定(较新)版本的共享库(.so)...相关推荐
- linux中运行.pro文件,Linux下pro*c运行配置
在Linux下运行.pc程序时,需要用到proc命令. -配置Pro*C/C++,以及链接到Oracle. 一般安装oracle时候都已经安装了pro*c,所以一般不需要再配置/etc/profile ...
- 如何在linux下运行matlab文件,linux bash下如何运行Matlab程序
购置服务器后,应安装相应的科学计算软件.对于有显示器的服务器,用户可以方便的使用图形界面操作软件.而对于常见的远程登录方式,或是无显示设备的服务器而言,一般采用bash命令操作软件.这里以常用的Mat ...
- linux检查运行程序文件,LINUX定时检查程序运行状态
当初偶那么一不小心,不知怎么给PHP配了个和MySQL版本不匹配的so文件,于是我的数据库就经常因为某些兼容问题挂吖挂吖挂吖...动不动MySQL服务就会挂掉,但我又不知道该怎么搞出正确的库,所以只好 ...
- linux服务器运行matlab文件报错
linux服务器运行matlab文件报错 在linux服务器上安装matlab之后,如果想要运行matlab程序,通常的做法是先cd到matlab文件所在的文件夹,然后输入指令 % 假定matlab文 ...
- python打卡以及Linux自动运行python文件
python打卡以及Linux自动运行python文件 前因 分析 python代码 实现linux自动运行python文件 了解crond 开机自启设置 定时运行python文件设置 crond踩坑 ...
- linux删除指定大小的文件,Linux下删除空文件,删除指定大小的文件
Linux下批量删除空文件(大小等于0的文件)的方法: find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还可以删除指 ...
- 查看Linux服务器运行级别命令,linux命令1、如何查看当前的Linux服务器的运行级别?...
1.如何查看当前的Linux服务器的运行级别? 答: 'who -r' 和 'runlevel' 命令可以用来查看当前的Linux服务器的运行级别. 2.如何查看Linux的默认网关? 答: 用 &q ...
- Linux C try 头文件,linux c 头文件
//1.Linux中一些头文件的作用: #include //ANSI C.提供断言,assert(表达式) #include //GCC.GTK,GNOME的基础库,提供很多有用的函数,如有数据结构 ...
- linux重命名乱码文件,Linux中重命名乱码文件
Linux下,如何将一个乱码的文件进行重命名 方法一: 命令格式:mv $(ls |egrep "[^a-zA-Z0-9.-]") tandao.tx [root@nb o]# l ...
- linux怎么运行脚本文件路径,关于linux中执行脚本或程序时指定的路径
假设/mnt/bin 目录下存在一个名为 hello.sh 的可执行文件. 1. 若当前目录是 /mnt/bin ,可以使用 ./hello.sh 来执行这个可执行文件,但是使用 hello.sh 就 ...
最新文章
- JavaScript最全编码规范
- SSH远程管理(用户登录控制及密码验证)
- echart css样式弄了几个月了,样式一直都没有好好解决,好激动
- CS中using的使用-以FileStream写入文件为例
- C++Heap Sort堆排序的实现算法(附完整源码)
- 计算机专业科普知识图文并茂,科普下计算机专业需要什么基础知识?
- HDLBits答案(20)_Verilog有限状态机(7)
- Linux网络不可达解决方法
- 【剑指offer】_12 数组中的逆序对
- 今天,这些公众号被永久禁言
- linux文字大小,Qt 字体大小的计算
- JAVA中的isMirror函数_Swift中的反射Mirror
- 计算机端口详解(总结)
- NFS PRC端口映射器
- 弹性碰撞次数与圆周率的关系 - 3Blue1Brown
- 使用腾讯云COS对象存储(详细流程)
- 深圳中学因招聘上热搜:名校博士挤破头想进,教学成绩也确实不服不行
- iOS10新特性——————陈Hong鑫
- JZOJ5055 树上路径
- Android 高级面试题及答案
热门文章
- maven pom 文件的 scope,scope=system 时打包打不进
- ajax zlib,jQuery递增地读取Ajax流吗?
- python多线程实现同时下载_Python实现多线程下载
- mysql 5.7 binlog 压缩_MySQL binlog 压缩功能的相关介绍-爱可生
- 【转】for循环中进行Promise异步操作的问题总结
- 《网页设计技巧》系列之一 浅谈文本排版
- python 判断是字母的多种方法
- Hibernate方法save、update、merge、saveOrUpdate及get和load的区别
- Linux下出现command not found的解决办法
- 借助mapshaper的简化来修复geojson的拓扑错误