我的计算机上有不同的C++编译器,每个编译器都有其自己的libstdc++。so,并且它们的大小也不同。

-rwxr-xr-x. 1 root root 967K Mar 22  2017 libstdc++.so.6.0.13
-rwxr-xr-x. 1 root root 6.5M Aug  1  2017 libstdc++.so.6.0.20
-rwxr-xr-x. 1 root root  11M Aug  1  2017 libstdc++.so.6.0.21
-rwxr-xr-x. 1 root root  12M Jan 30 16:58 libstdc++.so.6.0.24

我想知道为什么libstdc++。so.6.0.13比别人小得多,并且有什么方法可以减小别人的身材。
如果有人可以帮助我,我会很高兴。

最佳答案

libstdc++的版本控制方案具有误导性,当考虑相应的GCC版本时,这些版本之间的差异实际上是巨大的:

  • GCC 4.4.2:libstdc++。so.6.0.13(2009年10月15日)
  • GCC 4.9.0:libstdc++。so.6.0.20(2014年4月22日)
  • GCC 5.1.0:libstdc++。so.6.0.21(2015年4月22日)
  • GCC 7.2.0:libstdc++。so.6.0.24(2017年8月14日)

  • 在GCC 4.4和4.9之间有C++ 14的实现,并且在C++ 17上的主要工作以及此后的各种实验性建议。
    从libstdc++的FAQ:

    简而言之-关于大小,无法做太多事情。如果您真的有兴趣,可以使用readelf -a libname.so查看里面的内容
    您总是可以降级到较旧的GCC版本,该版本将附带较小的libstdc++。
    话虽这么说,在Ubuntu上libstdc++.so.6.0.24的大小是1.54MB,所以实际上并没有增长那么多。您的特定发行版可能有问题,或者您抢了一个调试版本。您可以尝试使用strip libstdc++.so.6.0.24剥离调试符号(strip实用程序是binutils的一部分)。

    关于c++ - 如何减少C++标准库libstdc++。so的文件大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50581090/

    10-13 08:28