2021-02-04 11:30:47 +00:00
|
|
|
|
![Cosmopolitan Honeybadger](usr/share/img/honeybadger.png)
|
|
|
|
|
|
2020-06-15 14:18:57 +00:00
|
|
|
|
# Cosmopolitan
|
|
|
|
|
|
2021-01-29 00:19:10 +00:00
|
|
|
|
[Cosmopolitan Libc](https://justine.lol/cosmopolitan/index.html) makes C
|
|
|
|
|
a build-once run-anywhere language, like Java, except it doesn't need an
|
|
|
|
|
interpreter or virtual machine. Instead, it reconfigures stock GCC to
|
|
|
|
|
output a POSIX-approved polyglot format that runs natively on Linux +
|
2021-02-05 14:16:20 +00:00
|
|
|
|
Mac + Windows + FreeBSD + OpenBSD + NetBSD + BIOS with the best possible
|
2021-01-29 00:19:10 +00:00
|
|
|
|
performance and the tiniest footprint imaginable.
|
|
|
|
|
|
|
|
|
|
## Background
|
|
|
|
|
|
|
|
|
|
For an introduction to this project, please read the [αcτµαlly pδrταblε
|
|
|
|
|
εxεcµταblε](https://justine.lol/ape.html) blog post and [cosmopolitan
|
|
|
|
|
libc](https://justine.lol/cosmopolitan/index.html) website. We also have
|
|
|
|
|
[API documentation](https://justine.lol/cosmopolitan/documentation.html).
|
|
|
|
|
|
|
|
|
|
## Getting Started
|
|
|
|
|
|
2021-02-07 14:11:44 +00:00
|
|
|
|
Cosmopolitan can be compiled from source on any Linux distro.
|
2021-01-29 00:19:10 +00:00
|
|
|
|
|
|
|
|
|
```sh
|
2021-02-07 14:11:44 +00:00
|
|
|
|
tar xf cosmopolitan-0.1.2.tar.gz # see releases page
|
|
|
|
|
cd cosmopolitan-0.1.2
|
|
|
|
|
make -j16
|
2021-01-29 00:19:10 +00:00
|
|
|
|
o//examples/hello.com
|
2021-02-07 14:11:44 +00:00
|
|
|
|
find o -name \*.com | xargs ls -rShal | less
|
2021-01-29 00:19:10 +00:00
|
|
|
|
```
|
|
|
|
|
|
2021-02-07 14:11:44 +00:00
|
|
|
|
Alternatively you can use the release binaries:
|
2021-01-29 00:19:10 +00:00
|
|
|
|
|
|
|
|
|
```sh
|
2021-02-07 14:11:44 +00:00
|
|
|
|
unzip cosmopolitan-amalgamated-0.1.2.zip # see releases page
|
2021-01-29 00:19:10 +00:00
|
|
|
|
echo 'main() { printf("hello world\n"); }' >hello.c
|
|
|
|
|
gcc -g -O -static -fno-pie -no-pie -mno-red-zone -nostdlib -nostdinc \
|
|
|
|
|
-o hello.com.dbg hello.c -Wl,--gc-sections -Wl,-z,max-page-size=0x1000 -fuse-ld=bfd \
|
|
|
|
|
-Wl,-T,ape.lds -include cosmopolitan.h crt.o ape.o cosmopolitan.a
|
|
|
|
|
objcopy -SO binary hello.com.dbg hello.com
|
|
|
|
|
./hello.com
|
|
|
|
|
```
|