Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于一些syscall、libc、gcc、musl-gcc基础常识的问题? #2

Open
GCYYfun opened this issue May 26, 2020 · 1 comment
Open

Comments

@GCYYfun
Copy link
Owner

GCYYfun commented May 26, 2020

周知OS有system call、作用是 由OS这个应用向依赖于它的上层软件提供 OS 所管辖的资源的操作能力、为了方便和统一 逐渐形成了 POSIX 标准、按照这个标准去制作syscall 、大家就都比较容易使用、但终归 写程序还是会有不方便、就又形成了一层抽象和封装 、用C包装起来了syscall、称之为 libc、提供成为库函数、去调用libc会比直接调用syscall 方便一些、

比如最开始有 ANSI C 就叫做了libc 、之后GUN也出了一个libc 、叫做了glibc、目前要用的 musl 也是同样的东西、不同的是具体的实现、但封装的都是基于POSIX标准的syscall、

有一些 问题:

  1. Ubuntu 有没有自带的libc、是glibc么?

缺省带glibc

  1. Ubuntu 下 我通过 man 手册 去查询 read 、read(2) 这是Ubuntu的实现的syscall么?

是linux实现的syscall

  1. 那么read(2) 所需的头文件 unistd.h 它是什么呢?syscall的头文件?

不是,是libc的部分函数声明的头文件

  1. gcc 是用来编译c的、它是需要libc的支持么?用的是glibc?、是否可以替换?

需要libc。缺省是glibc。可以替换。

  1. 如果是 选择不同的libc 、应该就无法编译了吧、毕竟库都不一样了、难道函数定义会一样么?

glibc是事实的标准,其他libc库会向它看齐,但会有微小区别。

  1. 那么musl-gcc 看 了介绍 说 approach for producing musl-targeting cross compilers
    什么叫做 以musl为目标的交叉编译器 呢?musl-targeting 指的是什么、musl-libc? cross compilers 这个交叉是什么意思?

把gcc编译程序依赖的glibc换成了musl-libc

cross compilers 可以理解为换了libc的gcc

@GCYYfun GCYYfun changed the title 关于一些musl-gcc的问题? 关于一些syscall、libc、gcc、musl-gcc基础常识的问题? May 26, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants