将libstdc 静态链接起来是一个很好的做法

Is it a good practices to link libstdc++ static?

本文关键字:一个 很好 静态 libstdc 链接 起来      更新时间:2023-10-16

我最近有一个位置,用于开发在GNU/Linux和Unix中运行的C 服务器应用程序,包括Solaris,HP-UX等。由于我的公司计划从头开始重写,因此我正在考虑如何使用现代C 开发它。

不幸的是,由于其封闭平台的性质,似乎并非总是有可能在客户端机器中获得下降libstdc 运行时。我知道libstdc 是向后兼容的,但是我必须瞄准GCC 3.4或4.2(在HP-UX的情况下)很糟糕,并且他们(Unix Provider)的编译器很烂。

幸运的是,似乎有些人声称将libstdc 联系起来,静态在某种程度上是可以的,并且有人以技术方式推荐它。但是,我不确定这样做(就法律和技术而言)是否安全。

链接libstdc 静态的很有意义吗?该产品为第三方开发人员提供可执行且共享的库,并且不会加载任何第三方共享库,而不是在System的One中。

我的50美分:

我非常喜欢静态链接物品(尤其是在Windows上),但价格是,如果存在错误/安全问题,则必须重新验证产品或提供更新。我不愿意在Linux/Unix中这样做,因为您通常在所有UNIX操作系统上都没有二进制兼容性。如果您为目标系统进行编译,则无关紧要(再次,除了您必须使用更新的错误来处理错误)。

表演明智,共享库的加载库的开销很小,如今可忽略不计。

合法地,你很好(免责声明,我不是律师,您可能想咨询公司的律师)。GNU在其运行时库中有一个例外:

源代码是根据GNU通用公共许可证分配的 版本3,根据第7节的加法描述了 在" GCC运行时库例外,版本3.1"中,如下(或参见 文件复制。runtime)

如果不是这种情况,那么Linux上都不会提供Propieary产品。

,如果您担心许可,您可能还需要考虑使用Clang编译器。它具有非常耐受的BSD许可。好吧,由于您是从头开始重写的东西。