为Raspberry Pi交叉编译新版本的node.js会产生5倍大的可执行文件

时间:2012-10-29 04:40:22

标签: node.js cross-compiling raspberry-pi

我为Raspberry Pi交叉编译了一个更新版本的node.js(v0.8.14)。 将新版本与通过apt-get安装的节点v0.6.19进行比较,我惊讶于可执行文件的大小从1.2Mb跳到6.2Mb。

由于

,尺寸增加了5倍
  • 较新版本的节点:v0.6.19 - > v0.6.19
  • GNU / Linux版本:2.6.26 - > 3.5.0
  • 别的什么?
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

1 个答案:

答案 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]。