[해결]wxWidgets으로 만든 프로그램의 크기를 더 줄일 수는 없나요?
글쓴이: noblepylon / 작성시간: 수, 2008/07/02 - 2:39오후
wxWidgets으로 간단한 프로그램을 하나 만들었습니다.
이걸 WindowsXP와 우분투에서 각각 빌드했는데 실행파일 크기가 정말 하늘과 땅 차이이군요.
Windows에서 빌드한 건 무려 2.3MB인데
우분투에서 한 건 겨우 50KB였습니다.
컴파일러는 gcc를 사용했고, 빌드 옵션은 -s -O3 -Os입니다.
(윈도에서는 MinGW사용)
1. 왜 이러한 차이가 생기는 것일까요?
2. 실행파일 크기를 어떻게 줄일 수 있을까요?
ps. 프로그램은 다음 링크에서 받을 수 있습니다.
Linux용 실행파일
Windows용 실행파일
Forums:
리눅스에서는
리눅스에서는 wxWidget이 동적링크된거고, 윈도에서는 정적링크된것 아닌가요?
wxWidget 을 깔지않아도 돌아가는지를 확인해보면 되겠죠.
리눅스에서 정적링크시킨 것이 50KB입니다.
분명히 옵션에서 정적링크를 하도록 했는데도 50KB밖에 되지 않았습니다.
---
"The truth will make you free."(John 8:32)
"I am the way, and the truth, and the life: no one comes to the Father but through Me."(John 14:6)
---
“내게 능력주시는 자 안에서 내가 모든 것을 할 수 있느니라.”(빌립보서 4:13)
동적인 경우엔 1kB에
동적인 경우엔 1kB에 정적일때 50kB라면 몰라도, 정적링크를 하도록 했는데 동적인 경우와 변함이 없다면 제대로 정적링크가 안됬을 듯하네요.
올리신 바이너리 받아서 실행해봐도, libwx_gtk2u_richtext-2.8.so.0를 못찾는다고 뜨는 걸로 봐도 그렇구요.
참고로 정적링크를 할려면 정적라이브러리파일이 필요합니다. 정적링크 옵션만 준다고 없는 라이브러리를 넣을순 없으니까요.
동적라이브러리파일을 .so이고, 정적파일은 .a지요. 정적라이브러리파일을 가지고 있는지 확인해보세요.
참고로 바이너리파일을 압축해주는 프로그램은 여럿 있습니다. 가장 유명한건 upx인데, 문제라고 하긴 뭐한데, 종종 upx로 압축된 바이너리파일을 무조건 해킹툴이나 바이러스등으로 진단하는 백신들이 있습니다. 파일을 위장하기위해서 실행파일을 압축하는 경우가 많거든요.
이야... 역시 upx가 해답이군요.
2.3MB였던 실행파일이 단숨에 630KB로 줄었습니다^^
이걸 자주 애용해야 겠군요.
ps. 리눅스에서도 정적링크를 하면 파일 크기가 2.3MB로 늘어나는 것을 확인했습니다.
---
"The truth will make you free."(John 8:32)
"I am the way, and the truth, and the life: no one comes to the Father but through Me."(John 14:6)
---
“내게 능력주시는 자 안에서 내가 모든 것을 할 수 있느니라.”(빌립보서 4:13)
정적링크는
정적링크는 라이센스에 주의하세요.
glibc 는 LGPL 이고, 정적링크에 대해서는 GPL 과 같은 수준의 대접을 해줘야합니다.
wxWidgets(wxWindows) 의 라이센스는 LGPL 에 기반한 변종입니다.
OTL
wxWidgets는 non-GPL에 정적링크될 수 있다고 알고 있습니다.
wxWidgets는 non-GPL에 정적링크될 수 있다고 알고 있습니다.
그런데 glibc는 어떤 일을 하나요?
---
"The truth will make you free."(John 8:32)
"I am the way, and the truth, and the life: no one comes to the Father but through Me."(John 14:6)
---
“내게 능력주시는 자 안에서 내가 모든 것을 할 수 있느니라.”(빌립보서 4:13)
댓글 달기