gpt4 book ai didi

c++ - c++ 可执行文件的不同 linux 发行版的问题

转载 作者:太空狗 更新时间:2023-10-29 23:27:14 26 4
gpt4 key购买 nike

我有一个 c++ 代码可以在我的 linux 机器 (Ubuntu Karmic) 上完美运行。当我尝试在另一个版本上运行它时,我缺少所有类型的共享库。

有什么方法可以将所有共享库合并到一个可执行文件中吗?

编辑:我想我问错了问题。当我的可执行文件已经构建时,我应该寻求一种方法来静态链接我的可执行文件。我在 ermine 中找到了答案& statifier

最佳答案

缺少共享库的可能原因有 3 种:

  • 您正在使用其他发行版默认不存在的共享库,或者您已将它们安装在您的主机上,而不是另一个,例如libDBI.so
  • 您在链接时过度指定了版本,例如libz.so.1.2.3 和另一台机器有一个 API 兼容(主要版本 1)但不同的次要版本 2.3,这可能会与你的程序一起工作,只要它能链接
  • 库的主要版本已更改,这意味着它不兼容 libc.so.2libc.so.1

修复是:

  • 不要链接你不需要的库,它们可能不在不同的发行版上,或者,在其他机器上安装额外的库,手动或使它们依赖于你的安装程序包(例如使用 RPM)<
  • 不要在命令行上如此严格地指定版本 - 链接 libz.so.1 而不是 libz.so.1.2.3
  • 针对不同的 libc 版本编译多个版本。

关于c++ - c++ 可执行文件的不同 linux 发行版的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2141105/

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