4 ms·
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
by sebcat 10y 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.
- kibwen 10y ago> I am sure that it's quite possible to generate small Rust > binaries as well. Indeed, here's a 151-byte hello world[0] in Rust: http://mainisusuallyafunction.blogspot.com/2015/01/151-byte-static-linux-binary-in-rust.html http://mainisusuallyafunction.blogspot.com/2015/01/151-byte-...