|
|
|
|
|
by sebcat
3549 days ago
|
|
5344 byte statically linked hello world in C: $ musl-gcc -static -Os -s -o hello hello.c
$ ls -la hello
-rwxrwxr-x. 1 sebastian sebastian 5344 Sep 30 06:22 hello
$ ldd hello
not a dynamic executable
$ ./hello
Hello, World
384 Byte hello world using NASM and ld on linux/amd64: BITS 64
global _start
%define SYS_write 1
%define SYS_exit 60
%define STDOUT_FILENO 1
section .text
_start:
call after
strHello: db 'Hello, World!',10
lenHello equ $-strHello
after:
pop rsi
mov rdx, lenHello
mov rax, SYS_write
mov rdi, STDOUT_FILENO
syscall
mov rax, SYS_exit
xor rdi, rdi
syscall
Most of the size overhead in the latter example comes from the ELF header, so by paying a bit more attention to the linker scripts, or just inlining a small ELF header with db in the asm file, it would be even smaller.Just for size comparison. I am sure that it's quite possible to generate small Rust binaries as well. |
|