- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我决定采取Eudyptula Challenge .
在我提交了第一个任务之后,它就是构建一个简单的“Hello World!”。模块,我收到了以下答案。
Please read the requirements for the Makefile and allow the module to be built against any kernel source tree on the filesystem, not just those kernels that happened to be installed in
/lib/
at some point in time.
The Makefile should be able to build the kernel module against the source of the currently-running kernel as well as being able to accept an arbitrary kernel sources directory from an environment variable.
KERNELRELEASE
已设置。如果是我构建模块
$(KERNELRELEASE)/build
/lib/modules/$(shell uname -r)/build
最佳答案
根据 Eudyptula challenge规则,禁止给你直接解决,所以我会尽量描述答案的元素,所以你可以自己想出解决方案。基本上,我在下面写的所有内容都在 Documentation/kbuild/modules.txt 中进行了描述。文件(尤其是在 section 3.1 - Shared Makefile 中),所以我认为这不会违反某种规则。所以下面只是对提到的文档中描述的内容的解释。KERNELRELEASE
多变的
你的错误在于认为 $(KERNELRELEASE)
旨在保留内核的路径。什么$(KERNELRELEASE)
变量实际上意味着 -- 你可以在 Documentation/kbuild/makefiles.txt 中找到它:
KERNELRELEASE
$(KERNELRELEASE)
is a single string such as"2.4.0-pre4"
, suitablefor constructing installation directory names or showing inversion strings. Some archMakefiles
use it for this purpose.
Makefile
将被执行 2 次:从
您的
make
命令和来自
内核
Makefile
.和
$(KERNELRELEASE)
可能有助于弄清楚:
Makefile
从您的 make
运行命令;在这一步你将执行内核的Makefile
(使用 -C
参数提供内核目录)。一旦你运行了make
对于内核的 Makefile(来自 Makefile 的 内的 ),您的 Makefile
将第二次执行(见下一项)。 Makefile
正在从内核的 Makefile
执行(它定义了这个变量并调用了你的Makefile
)。在这一步,您可以使用内核构建系统功能,如 obj-m . -C
参数Makefile
中定义一些自定义变量。它将保存内核目录路径。您可以调用KDIR
例如。如您所知,您的内核源代码位于以下路径:/lib/modules/$(shell uname -r)/build
.接下来,您可以将此变量提供给 -C
执行内核的 Makefile 时的参数(见 man 1 make)。Makefile
外部传递此变量成为可能。 .为此,可以使用 conditional variable assignment operator :KDIR ?= /lib/modules/$(shell uname -r)/build
这样如果你通过 KDIR
Makefile 的变量,如下所示:$ make KDIR=bla-bla-bla
KDIR
变量将具有您传递的值。否则它将包含默认值,即 /lib/modules/$(shell uname -r)/build
.
关于makefile - Eudyptula Challenge 和内核路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30031161/
我对 Eudyptula Challenges 感兴趣但我刚刚发布了任务 1 的解决方案,他们需要很长时间才能做出回应。有人可以发布任务列表(不是解决方案),以便我可以按照自己的节奏完成任务。提前致谢
我决定采取Eudyptula Challenge . 在我提交了第一个任务之后,它就是构建一个简单的“Hello World!”。模块,我收到了以下答案。 Please read the requir
我是一名优秀的程序员,十分优秀!