xref: /relibc/README.md (revision 7016e5c833af9fe4182462e6a86e498cd5e8c738)
1# relibc ![build](https://travis-ci.org/redox-os/relibc.svg?branch=master)
2relibc is a portable POSIX C standard library written in Rust. It is under heavy development, and currently supports Redox, Linux and DragonOS.
3
4The motivation for this project is twofold: Reduce issues the redox crew was having with newlib, and create a safer alternative to a C standard library written in C. It is mainly designed to be used under redox, as an alternative to newlib, but it also supports linux syscalls via the [sc](https://crates.io/crates/sc) crate.
5
6## Building
7Just run `make all`.
8
9### Build for DragonOS
10
11You can follow the instructions to build relibc for DragonOS:
12
13```bash
14mkdir -p sysroot/usr
15make -j $(nproc) && DESTDIR=sysroot/usr make install -j $(nproc)
16```
17
18### Issues
19#### I'm building for my own platform which I run, and am getting `x86_64-linux-gnu-ar: command not found` (or similar)
20The Makefile expects the gnu compiler tools prefixed with the platform specifier, as would be present when you'd install a cross compiler. Since you are building for your own platform, some distros (like Manjaro) don't install/symlink the prefixed executables.
21An easy fix would be to replace the corresponding lines in the Makefile, e.g.
22```diff
23 ifeq ($(TARGET),x86_64-unknown-linux-gnu)
24        export CC=x86_64-linux-gnu-gcc
25-       export LD=x86_64-linux-gnu-ld
26-       export AR=x86_64-linux-gnu-ar
27+       export LD=ld
28+       export AR=ar
29        export OBJCOPY=x86_64-linux-gnu-objcopy
30 endif
31```
32
33### [Contributing](CONTRIBUTING.md)
34
35## Supported OSes
36
37 - Redox OS
38 - Linux
39 - DragonOS
40
41## Supported architectures
42
43 - x86\_64
44 - Aarch64
45