#file #redox #posix #generate #issue #standard #run-time

nightly redox-os/relibc

https://gitlab.redox-os.org/redox-os/relibc 的镜像

1 个不稳定版本

0.1.0 2018年3月3日

#910Unix 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