1 个不稳定版本
0.1.0 | 2018年3月3日 |
---|
#910 在 Unix API 中
831 个星标 & 36 个关注者
1MB
31K SLoC
relibc
relibc 是一个用 Rust 编写的可移植 POSIX C 标准库。它正处于快速开发中,目前支持 Redox 和 Linux。
这个项目的动机有两个:减少 Redox 开发者在 newlib 上遇到的问题,并创建一个用 C 编写的 C 标准库的安全替代品。它主要设计用于 Redox 下,作为 newlib 的替代品,但也支持通过 sc 包使用 Linux 系统调用。
仓库布局
include
- 头文件(大多数是宏和变长函数cbindgen
无法生成)src
- 源文件src/c
- C 代码src/crt0
- 运行时代码src/crti
- 运行时代码src/crtn
- 运行时代码src/header
- 头文件实现src/header/*
- 每个文件夹都有一个cbindgen.toml
文件,它生成 C 到 Rust 的接口和头文件src/ld_so
- 动态加载器代码src/platform
- 特定平台和通用代码src/platform/redox
- Redox 特定代码src/platform/linux
- 适用于 Linux 的特定代码src/pthread
- pthread 实现src/sync
- 同步原语tests
- C 测试(每个 MR 都需要在其中全部通过)
在构建系统上构建
在您的 Redox 构建系统中运行
make prefix
(仅在 relibc
文件夹的修改时间戳更改时有效)
问题
我正在为自己的平台构建,并且得到 x86_64-linux-gnu-ar: 命令未找到
(或类似)
Makefile 期望 GNU 编译器工具前缀为平台指定符,就像安装交叉编译器时那样。由于您正在为自己的平台构建,一些 Linux 发行版(如 Manjaro)没有安装/符号链接前缀的可执行文件。
一个简单的解决方案是替换 Makefile 中的相应行,例如
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
贡献
在开始贡献之前,阅读 此文档。
支持的操作系统
- Redox OS
- Linux
支持的架构
- x86_64 (Intel/AMD)
- Aarch64 (ARM64)
依赖项
~4–5.5MB
~90K SLoC