2012-10-29 2 views
3

라스베리 파이에 대한 node.js (v0.8.14)의 최신 버전을 크로스 컴파일했습니다. 새로운 버전을 apt-get을 통해 설치된 v0.6.19 노드와 비교해 보면, 실행 파일의 크기가 1.2Mb에서 6.2Mb로 증가한 것에 놀랐습니다.라스베리 파이에 대한 node.js의 새 컴파일 버전이 5 배 더 큰 실행 파일

노드의

  • 최신 버전으로 인해 크기가 5 배 증가한 : v0.6.19 -> v0.6.19
  • GNU/리눅스 버전 : 2.6.26 -> 3.5.0
  • 다른 건 없나요? 큰 바이너리는 정적으로 링크 된 코드의 숫자를 사용하고 있기 때문에 readelf로 모두 바이너리에 면밀한 관찰을 복용 한 후
 
[email protected] ~ $ /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 

[email protected] ~ $ ./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

현재 확인할 수는 없지만 0.6.19를 컴파일하고 비교하여 첫 번째 질문에 대답 할 수 있습니다. 어쩌면 패키지를 만든 사람마다 다른 최적화가 적용되었을 수도 있습니다. – loganfsmyth

+0

노드, 0.6에서 0.8 사이의 노드는 구성 스위치에 따라 자체 OpenSSL을 포함합니다. 그런 것일 수도 ... – Joe

답변

1

는 크기 증가의 대부분은 - 작은 바이너리 이상의 공유 라이브러리에 링크되어 .

FYI : 더 작은 노드에 링크 된 공유 라이브러리는 [libssl.so.1.0.0], [libz.so.1], [libv8.so.3.8.9.20], [ld-linux-armhf. so.3], [libcares.so.1], [libcrypto.so.1.0.0], [libev.so.4], & [libutil.so.1].