-f, --canonicalize
canonicalize by following every symlink in every component of the given name recursively; all but the last component must exist
-e, --canonicalize-existing
canonicalize by following every symlink in every component of the given name recursively, all components must exist
Run Code Online (Sandbox Code Playgroud)
我无法理解 -f 或 -e 是做什么的?措辞完全不清楚。规范名称基本上是最短的唯一绝对路径。但是名称的组成部分是什么意思呢?这是否意味着子目录?这里的“递归”是什么意思?我的理解是递归搜索给定规范名称的每个子目录。但是对于符号链接就没有意义了。
接下来所有组件必须存在的“-e”选项意味着什么?这里的组件是什么?
有人可以帮忙举一个简单的例子吗?谢谢
这可能是一个关于内核头的不连贯的问题,因为我对它以及它的使用地点和方式没有清楚的了解。我认为它可能会被标记。我的问题有 3 个部分:
我认为内核头提供了一个接口,以便内核的其他部分(例如模块)可以使用它们。这就是我的书本知识。我还没有看到或发现任何使用内核头的代码(如果有人能指出我,我将不胜感激)。它也可以在用户空间中使用吗?任何代码示例将不胜感激。
我发现使用make headers_install
内核头是由用户空间公开的,但同时不鼓励在用户空间中使用内核头。如果不鼓励,那么将其暴露给用户空间有什么用呢?
根据this和this,内核头文件(.h 文件)应该位于 3 个位置:/usr/include/linux/kernel.h
用于用户空间 b./lib/modules/$(uname -r)/build/include/linux/sched.h
这是外部模块 c. /usr/src/...
用于内核模块这是否意味着不同目录中的头文件具有不同的用途或不同的接口或签名?换句话说,#include <linux/xyz.h>
用户空间代码中的含义与#include <linux/xyz.h>
内核模块中的含义是否不同?外部模块与内核模块相同吗?
谢谢。