gpt4 book ai didi

c++ - Linux 上的共享库版本和可执行文件

转载 作者:太空狗 更新时间:2023-10-29 11:37:46 24 4
gpt4 key购买 nike

让我们描述以下场景:


我打算为 Linux 平台创建一个应用程序

应用程序将包含核心共享/动态可执行文件。该库将像一个引擎一样,提供通用和必要的类和函数。

现在,我知道库和可执行文件都可能随时间发生变化,我想确保每个可执行文件都知道它的库是什么,如果库版本不同,它会显示一条消息,说明库是两个old(这可能是一个常量,遵守 ABI 规则,它将始终包含版本,并将在入口点的开头根据可执行文件的版本进行检查)。

我已经阅读了 ABI 规范和规则,但我不喜欢它们(太严格)。我不想在用户系统上有一个单独的库,我会更新它并尝试与旧的可执行文件保持兼容。我更喜欢,因为我不知道界面将如何改变,我想保留自己以后做任何改变的自由,让每个可执行文件在用户机器上都有自己的库版本。例如:

  • 今天,用户下载了可执行文件“MyApp1”和库“MyCoreLib”的 1.0.0 版本。
  • 一周后,我基于新版本的库创建了一个新应用程序。用户下载库“MyCoreLib”的 1.1.0 版本和名为“MyApp2”的新可执行文件。因此,我们有 2 个不同的可执行文件和同一个库(同名)的两个不同版本。
  • “MyApp1”仍应链接到“MyCoreLib”的 1.0.0 版本,而“MyApp2”应链接到新版本 1.1.0
  • 一周后,我基于库的旧版本 1.0.0 创建了一个新应用程序。由于该库已存在于用户的计算机上,因此我们将使用它。
  • 现在我们有两个使用第一个版本库的可执行文件和一个使用较新版本的可执行文件,依此类推。

在 Linux 中,我们在 .so 库的末尾有版本号。这是否让我们有可能拥有同一个库的多个版本并且每个可执行文件链接到它自己的库版本

最佳答案

关于c++ - Linux 上的共享库版本和可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23017726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com