为DragonOS移植了的relibc

GnoCiYeH 931a8760c4 Merge branch 'dragonos-relibc' into update-dsc 1 năm trước cách đây
.cargo ed19381547 target=x86_64-dragonos能通过编译 1 năm trước cách đây
.vscode fd22fbbabf 添加了pipe的系统调用 (#14) 1 năm trước cách đây
core_io 9eeb73319d Update core_io submodule to a valid commit. 3 năm trước cách đây
include 0646140d99 Remove detailed abort, too many compatibility issues 1 năm trước cách đây
openlibm b3dda7519d Update openlibm 5 năm trước cách đây
posix-regex 0684fb6e4c Bump posix-regex version 6 năm trước cách đây
pthreads-emb 9c423abb5f Update pthreads-emb 3 năm trước cách đây
ralloc 6c11a18240 Go back to patched ralloc 6 năm trước cách đây
src 0a1b6ce239 修改了一段 sigrestorer 汇编使得 dragonos 能正常执行 sigreturn (#20) 1 năm trước cách đây
tests ec6243bc5b wctrans/towctrans implementation proposal. 1 năm trước cách đây
.editorconfig 6952a079ae Fix CI 4 năm trước cách đây
.gitignore 4f4c6e665f 增加对mmap、munmap、mprotect的支持 (#15) 1 năm trước cách đây
.gitlab-ci.yml 9a7dfc4f4d Disable test:redox for now 1 năm trước cách đây
.gitmodules 089ee030a1 更换submodule远程为dragonos镜像 (#16) 1 năm trước cách đây
CONTRIBUTING.md ff874c87d7 tests: Fix function signatures 5 năm trước cách đây
Cargo.toml 2c0c7f7bed update dsc 1 năm trước cách đây
LICENSE ba515d83df Create LICENSE 6 năm trước cách đây
Makefile 5e1004a8a8 编译的时候,如果系统已经安装x86_64-dragonos-gcc,则使用x86_64-dragonos-gcc来编译 (#10) 1 năm trước cách đây
README.md 39989b488c 适配dragonos 1 năm trước cách đây
Xargo.toml ae34ade595 Use path to patch compiler-builtins 4 năm trước cách đây
bindgen_transform.sh 799c8828c2 mkdir and rmdir 6 năm trước cách đây
build.rs be35961d82 Patch support run first demo on dragonos (#6) 1 năm trước cách đây
ci.sh 9f86748a58 Fix make libs in CI 4 năm trước cách đây
fmt.sh bab4e2896a Format 6 năm trước cách đây
init_dragonos_toolchain.sh 70e3f729c5 完善初始化工具链脚本,增加对“已存在工具链配置文件“情况的判断 (#9) 1 năm trước cách đây
redoxer.sh 903393574e redoxer.sh will clear build-std from CARGOFLAGS 1 năm trước cách đây
renamesyms.sh 70a8fca3c1 Use target binutils for renamesyms 2 năm trước cách đây
rust-toolchain.toml 0bd476d28a Update to new Rust toolchain 1 năm trước cách đây
rustfmt.toml b8c50c7c64 Format 5 năm trước cách đây

README.md

relibc build

relibc is a portable POSIX C standard library written in Rust. It is under heavy development, and currently supports Redox, Linux and DragonOS.

The 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 crate.

Building

Just run make all.

Build for DragonOS

You can follow the instructions to build relibc for DragonOS:

mkdir -p sysroot/usr
make -j $(nproc) && DESTDIR=sysroot/usr make install -j $(nproc)

Issues

I'm building for my own platform which I run, and am getting x86_64-linux-gnu-ar: command not found (or similar)

The 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. An easy fix would be to replace the corresponding lines in the Makefile, e.g.

 ifeq ($(TARGET),x86_64-unknown-linux-gnu)
        export CC=x86_64-linux-gnu-gcc
-       export LD=x86_64-linux-gnu-ld
-       export AR=x86_64-linux-gnu-ar
+       export LD=ld
+       export AR=ar
        export OBJCOPY=x86_64-linux-gnu-objcopy
 endif

Contributing

Supported OSes

  • Redox OS
  • Linux
  • DragonOS

Supported architectures

  • x86_64
  • Aarch64