Chrome:如何将1.5GB的源代码压缩到50MB的可执行文件中

Ran*_*lue 8 executable google-chrome compilation

这简直让我感到困惑.我刚刚下载了Chrome源代码的1.5GB tarball.编译的相同代码压缩到大约50MB.

为什么源代码的大小和可执行文件的大小之间存在这样的差异?

Jer*_*via 13

可能导致此问题的列表.

  1. 可执行文件不需要空格,注释或任何好的格式化东西.源代码可能有大量的文档和空格,只是为了使代码可读,所有这些都占用了空间.

  2. 源代码可能会带来很多其他代码来测试应用程序.但是这个测试代码永远不会进入最终的应用程序.

  3. 代码中包含的文档.根据格式,.doc或.docx文件,文档可能很大.

  4. 其他人提到源代码控制注释也可能在代码中.在源代码中包含提交消息也可以使文件变大.

  5. 我不知道你何时/何时进行文件比较,但如果你在编译时间之后就这样做了,那么你可能也在计算中包含了编译工件(*.o文件).因此,当它实际上只有750 MB(粗略地说)时,您可能会感觉源代码为1.5GB.

  6. 根据编译器及其有多好,它可能会生成更少的汇编代码,从而创建更小的文件.虽然我认为今天的大多数编译器都是合理的,但这不应该考虑到太大的尺寸差异.(但我可能是错的,我不是编译人员)

  7. 如果应用程序正在使用所有库进行静态编译,那么它将更大,因为现在它必须包含它的依赖项.但是,如果动态链接/加载库,则可执行文件本身可能会大大减小,因为它只会在运行时链接到库,并且只在需要时加载它们.

tarball是1.5GB还是1.5GB的扩展tarball?

无论如何,很多因素都可以在这里发挥作用.


小智 8

所有源代码文件顶部的版权/许可证平均为1621个字节.Chromium(没有任何svn/git/object/image文件)有73,510个源文件(为此,我把它保存在.cc, .h,.cpp, .idl,.m, .js,.c, .py) .

这只是119159710字节的版权声明.

或116366千字节

或133兆字节.只是.in ..版权声明..

更糟糕的是,Chromium上存在漏洞,表明它们甚至可能违反了自己的许可证,因为它们混合了许多不同的口味和版本的开放式(以及一些不那么开放的)许可证.[1]

资料来源:

[1] https://code.google.com/p/chromium/issues/detail?id=28291

[2]我使用铬源代码:

Trevors-Mac:src trevor $ find.-name"*.cc"| wc -l

15941

Trevors-Mac:src trevor $ find.-name"*.h"| wc -l

26125

Trevors-Mac:src trevor $ find.-name"*.cpp"| wc -l

5191
Run Code Online (Sandbox Code Playgroud)

Trevors-Mac:src trevor $ find.-name"*.idl"| wc -l

 881
Run Code Online (Sandbox Code Playgroud)

Trevors-Mac:src trevor $ find.-name"*.m"| wc -l

 258
Run Code Online (Sandbox Code Playgroud)

Trevors-Mac:src trevor $ find.-name"*.js"| wc -l

13528

Trevors-Mac:src trevor $ find.-name"*.c"| wc -l

7856
Run Code Online (Sandbox Code Playgroud)

Trevors-Mac:src trevor $ find.-name"*.py"| wc -l

3988
Run Code Online (Sandbox Code Playgroud)

Trevors-Mac:src trevor $