【任务发布】删除relibc依赖以及旧的libc

由于DragonOS已经具有Linux二进制兼容性,并且由于编译时间的问题,计划在0.2.0版本中移除relibc的依赖,以及旧的libc。

任务

  • 删除旧版shell
  • 移除relibc的依赖,并把相关的应用程序改为依赖musl
  • 在DragonOS中安装musl库

联系方式

感兴趣进行这项工作的同学,欢迎回帖认领。

1 个赞

在DragonOS中安装musl库,具体需要做哪些

就是把musl库编译好安装进去而已。

直接把$(HOME)/opt/{riscv64/x86_64}-linux-musl-cross-gcc-9.4.0/{riscv64/x86_64}-linux-musl/复制进去行吧?

我打算做这项任务

并不是。那个是gcc。我指的是musl库。

?我说的是cross-gcc的那个子目录,那里不是库吗?

那个是gcc编译器。

这种结构不是库吗?


gcc在上一层目录的bin里

gcc编译出来的东西。

目前已经去除了relibc,不过还有些问题,但在linux中都不出现

  1. about,我想用ANSI转义代码来打印彩色字符,但目前系统里还没有这方面的处理
  2. http_server有问题,访问以后能返回消息,但直接卡住了,也不显示客户端传来的信息,但是系统还能跑,只是程序自己卡住了
  3. 测试sqlite3,发现没有实现17号系统调用
  4. test_bind的时候出现内存分配错误
  5. 端口绑定后,提示有些问题(在linux下会正确提示bind failed: Address in use
    image

第一个问题可以由#517解决

第三个问题解决了

第五个问题解决了,因为SystemError中从41号开始就不对了

这个怎么说?这么神奇???哈哈哈

是用的apps下面的那个测试sqlite3的程序吗

参考errno.h里面改的,这里面40号后面的位置是EWOULDBLOCK,但是它和11号类似,也用了11号
image

是的,需要实现pread

对哦,貌似没有41号。然后systemerror写错了。

貌似pread和pwrite跟read和write的最大区别是pread不改变文件的偏移量,这个感觉很好实现

1 个赞

musl库中make后的lib目录吗?
image
usr/include是不是可以直接复制musl项目的include目录

musl make install之后的那个目录应该就对了(记得指定DEST_DIR