🦃

Cosmopolitanを使用してビルドしたバイナリをqemuで実行

2022/09/04に公開

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