gpt4 book ai didi

c++ - 构建在不同版本的linux上运行的cpp程序

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:25 26 4
gpt4 key购买 nike

一些 linux 程序例如 mongodb 二进制文件可以在不同版本的 linux 上运行,无论主机 gcc 版本和 glibc 版本如何。

该怎么做?静态链接所有库?但是我听说 glibc 不应该是静态链接的。

最佳答案

要生成独立于已安装库的可执行文件,您必须静态链接它。

但是,如果应用程序不是很大/构建起来不是很复杂,通常最好是分发源代码并在目标系统上/为目标系统构建,或者为最流行的变体预构建。

您不想静态链接 glibc(以及应用程序可能使用的所有其他库)的原因是即使是最简单的应用程序也会变成大约 700K-1MB。鉴于我的发行版在/usr/bin 中有 1900 个条目,这将使它最小约 2GB,现在它是 400MB(其中包括 clang、emacs 和 skype 等野兽,所有这些以非静态链接形式的重量都超过 7MB - 他们可能每个都有十几个库依赖项 - 例如,如果使用静态链接编译,clang 会从不到 10MB 增长到大约 100-120MB)。

当然,对于静态链接,每个应用程序的所有代码都需要作为单独的拷贝加载到内存中。因此,整体内存使用量急剧上升。

关于c++ - 构建在不同版本的linux上运行的cpp程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22980470/

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