🦃
Cosmopolitanを使用してビルドしたバイナリをqemuで実行
Cosmopolitan を使用して
ビルドしたバイナリをqemuをつかって実行する方法を記載します。
$ cat hello.c
main() {
printf("hello world\n");
while(1);
}
$ gcc -g -Os -static -nostdlib -nostdinc -fno-pie -no-pie -mno-red-zone -fno-omit-frame-pointer -pg -mnop-mcount -mno-tls-direct-seg-refs -o hello.com.dbg hello.c -fuse-ld=bfd -Wl,-a
$ objcopy -S -O binary hello.com.dbg hello.com
$ qemu-system-x86_64 -nographic -drive format=raw,file=hello.com
SeaBIOS (version 1.13.0-1ubuntu1.1)
iPXE (http://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+07F8CA10+07ECCA10 CA00
Booting from Hard Disk...
hello world
(CTRL-a xで終了)
$
これで普通に実行もできるんですね。どうやってるんでしょう。
$ ./hello.com
hello world
(CTRL-cで終了)
$
Discussion