加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何在Linux上的项目中的一个共享库(.so)中修复?

发布时间:2020-12-14 01:14:02 所属栏目:Linux 来源:网络整理
导读:我想快速修复一个项目的.so库.重新编译.so并替换原始文件是否安全?或者我必须重建并重新安装整个项目?还是取决于? 解决方法 这取决于.共享库需要与您的可执行文件一起使用 binary-compatible. 例如, 如果您更改了库的内部函数之一的行为,则可能不需要重新
我想快速修复一个项目的.so库.重新编译.so并替换原始文件是否安全?或者我必须重建并重新安装整个项目?还是取决于?

解决方法

这取决于.共享库需要与您的可执行文件一起使用 binary-compatible.

例如,

>如果您更改了库的内部函数之一的行为,则可能不需要重新编译.
>如果您更改了应用程序已知的结构的大小(例如,通过添加成员),则需要重新编译,否则库和应用程序会认为结构比它小,并且在库时会崩溃尝试读取应用程序未写入的额外未初始化成员.
>如果更改应用程序中可见的任何函数的参数的类型或位置,因为库将尝试从堆栈中读取比应用程序放置的更多参数(这是这种情况) C,在C参数类型中是函数签名的一部分,因此app将拒绝运行,而不是崩溃).

经验法则(对于生产版本)是,如果您没有意识到您正在维护二进制兼容性,或者不确定二进制兼容性是什么,那么您应该重新编译.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读