在linux上使用静态链接构建应用程序是否明智?

时间:2012-07-09 13:09:52

标签: linux gcc g++ static-libraries static-linking

我需要构建一个在嵌入式供应商提供的linux版本上运行的应用程序。根据文档,它有libc版本2.8.90。我在桌面上用C ++构建了一个简单的应用程序,并将二进制文件和它链接到的库的副本一起复制到硬件中。为了消除针对不同版本库的链接的任何潜在冲突,我考虑尝试静态链接到库。经过一些研究后,我发现following question and answers并在阅读完之后给人的印象是,静态链接并不是一件好事。我在这里(或到目前为止的任何其他地方)找不到的是一个简单的解释,为什么这似乎是不赞成的。在我看来(几乎是linux的新手)是一种解决我将可执行文件捆绑为单个包并在我的硬件上运行的问题的方法,但很明显它似乎被认为是一个坏主意,但有人可以请解释为什么??

显然我知道这会导致我的二进制文件膨胀,但我并不担心。此外,我知道许可问题,但我并不关心这方面的问题。这不是商业应用程序,因此我不会认为它适用于我。

1 个答案:

答案 0 :(得分:4)

正如您所期望的那样,优点是可以在不必安装其他依赖项的情况下运行的单个二进制文件,您可以轻松地移动它们。

缺点是如果对链接库进行更新(例如安全修复)以及许可问题(如您所述),则需要重新编译整个应用程序。

权衡。如果它解决了你的问题,那就去吧。