2

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; ファイル/usr/ bin / node
v0.6.19
-rwxr-xr-x1ルートルート1.2MJun30 18:55 / usr / bin / node
/ usr / bin / node:ELF 32ビットLSB実行可能ファイル、ARM、バージョン1(SYSV)、動的リンク(共有ライブラリを使用)、
GNU / Linux 2.6.26の場合、uildID [sha1] = 0xb29e21fbf3e8a7db733fbcd0539e593264d88c94、削除

pi @ raspberrypi〜 $ ./node -v; ll -h ./node; ファイル./node
v0.8.14
-rwxr-xr-x 1 pi pi 6.2M Oct 28 20:43 ./node
./node:ELF 32ビットLSB実行可能ファイル、ARM、バージョン1(SYSV)、動的リンク(共有ライブラリを使用)、
GNU / Linux 3.5.0の場合、削除
4

1 に答える 1

0

で両方のバイナリを詳しく調べた後readelf、サイズの増加の大部分は、大きい方のバイナリが静的にリンクされた多数のコードを使用しているためです。小さい方のバイナリは、より多くの共有ライブラリに対してリンクされています。

参考:小さいノードでリンクされている共有ライブラリは、[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]。

于 2012-10-30T00:31:33.093 に答える