将libstdc 静态链接起来是一个很好的做法
Is it a good practices to link libstdc++ static?
我最近有一个位置,用于开发在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许可。好吧,由于您是从头开始重写的东西。
- 在 C++11 中利用 int*_t、int_fast*_t 和 int_least*_t 之间的差异的一个很好的例子是
- 对于短字符串来说,这是一个很好的哈希函数吗?
- 是否有一个很好的方法可以在C 11中打印出像JSON一样的Trie结构(仅迭代解决方案)的扁平命名空间
- 将libstdc 静态链接起来是一个很好的做法
- 对于这个特定用例来说,一个很好的排序算法
- 一个很好的支持 c++ 联合的替代方案
- 有没有一个很好的通用方法来用ruby包装swig生成的类
- boost asio和c++11是一个很好的匹配
- 这是"mutable" C++的一个很好的用例吗?
- 一个很好的向量散列函数
- 将类的std::vector作为同一类的属性是一个很好的设计选择
- 一个很好的例子说明了如何使函数primitve param const导致编译器优化
- 一个很好的算法来获得元素的闲置组合
- std::move(*this)是一个很好的模式吗?
- 是否有一个很好的方法找到两个变量的模数使用SSE?(没有SVML)
- 一个很好的免费IDE,安装在Windows上的Boost
- 一个很好的c++编程环境,适用于Mac OS X
- c++中计算sha-256的一个很好的库
- 基类的单元测试是一个很好的方法
- 有一个很好的测试c++优化编译器