… | |
… | |
36 | contains perl interpreter, libc, all the modules you need, all the |
36 | contains perl interpreter, libc, all the modules you need, all the |
37 | libraries you need and of course your actual program. |
37 | libraries you need and of course your actual program. |
38 | |
38 | |
39 | With uClibc and upx on x86, you can create a single 500kb binary that |
39 | With uClibc and upx on x86, you can create a single 500kb binary that |
40 | contains perl and 100 modules such as POSIX, AnyEvent, EV, IO::AIO, Coro |
40 | contains perl and 100 modules such as POSIX, AnyEvent, EV, IO::AIO, Coro |
41 | and so on. Or any other choice of modules. |
41 | and so on. Or any other choice of modules (and some other size :). |
42 | |
42 | |
43 | To see how this turns out, you can try out smallperl and bigperl, two |
43 | To see how this turns out, you can try out smallperl and bigperl, two |
44 | pre-built static and compressed perl binaries with many and even more |
44 | pre-built static and compressed perl binaries with many and even more |
45 | modules: just follow the links at <http://staticperl.schmorp.de/>. |
45 | modules: just follow the links at <http://staticperl.schmorp.de/>. |
46 | |
46 | |
… | |
… | |
1026 | good experiences with GCC 4.4.x but not GCC 4.5. |
1026 | good experiences with GCC 4.4.x but not GCC 4.5. |
1027 | |
1027 | |
1028 | To minimise code size, I used "-pipe -ffunction-sections -fdata-sections |
1028 | To minimise code size, I used "-pipe -ffunction-sections -fdata-sections |
1029 | -finline-limit=8 -fno-builtin-strlen -mtune=i386". The "-mtune=i386" |
1029 | -finline-limit=8 -fno-builtin-strlen -mtune=i386". The "-mtune=i386" |
1030 | doesn't decrease codesize much, but it makes the file much more |
1030 | doesn't decrease codesize much, but it makes the file much more |
1031 | compressible. |
1031 | compressible (and the execution a lot slower...). |
1032 | |
1032 | |
1033 | If you don't need Coro or threads, you can go with "linuxthreads.old" |
1033 | If you don't need Coro or threads, you can go with "linuxthreads.old" |
1034 | (or no thread support). For Coro, it is highly recommended to switch to |
1034 | (or no thread support). For Coro, it is highly recommended to switch to |
1035 | a uClibc newer than 0.9.31 (at the time of this writing, I used the |
1035 | a uClibc newer than 0.9.31 (at the time of this writing, I used the |
1036 | 20101201 snapshot) and enable NPTL, otherwise Coro needs to be |
1036 | 20101201 snapshot) and enable NPTL, otherwise Coro needs to be |