我为Raspberry Pi交叉编译了一个更新版本的node.js(v0.8.14)。 将新版本与通过apt-get安装的节点v0.6.19进行比较,我惊讶于可执行文件的大小从1.2Mb跳到6.2Mb。
由于
,尺寸增加了5倍pi@raspberrypi ~ $ /usr/bin/node -v; ll -h /usr/bin/node; file /usr/bin/node v0.6.19 -rwxr-xr-x 1 root root 1.2M Jun 30 18:55 /usr/bin/node /usr/bin/node: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26,uildID[sha1]=0xb29e21fbf3e8a7db733fbcd0539e593264d88c94, stripped pi@raspberrypi ~ $ ./node -v; ll -h ./node; file ./node v0.8.14 -rwxr-xr-x 1 pi pi 6.2M Oct 28 20:43 ./node ./node: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.5.0, stripped
答案 0 :(得分:1)
仔细查看两个带有readelf
的二进制文件后,大小增加的大部分是因为较大的二进制文件使用了许多静态链接的代码 - 较小的二进制文件链接到更多的共享库。 / p>
仅供参考:较小节点中链接的共享库为[libssl.so.1.0.0],[libz.so.1],[libv8.so.3.8.9.20],[ld-linux-armhf.so .3],[libcares.so.2],[libcrypto.so.1.0.0],[libev.so.4],& [libutil.so.1]。