为什么strcpy定义在minix的Lint_strcpy.c中?

Why strcpy is defined in Lint_strcpy.c in minix?

例如,在 FreeBSD 中,strcpy 定义在 lib/libc/string/strcpy.c 中。为什么在 minix 中它是在 lib/libc/string/Lint_strcpy.c 中定义的,而不是像在 FreeBSD 中那样在 strcpy.c 中定义的? Lint 前缀是什么意思?

值得一提的是,在minix中,一些函数(如strpcpy)就是这样定义的。我的意思是,strpcpy 是在 lib/libc/string/strpcpy.c 中定义的,而 strcpy 是在 lib/libc/string/Lint_strcpy.c 中定义的。这有什么意义?

如果您真正查看 lib/libc/string/Lint_strcpy.c 中的源代码,您会发现它是一个空定义。

与原始 NetBSD 源代码一样,用于为 Minix 构建 C 库的 strcpy() 的实际定义在 common/lib/libc/string/strcpy.c.

这样做是为了可以直接从同一个源文件为内核和用户空间共享同一个定义。

Lint_ 前缀表示一个文件,该文件仅用于创建 “lint 库”,实际上是一种简化构建的快捷方式lint 库的进程(它们 could/should 理论上也使用公共源文件)。