首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建/usr/src/linux-headers{version}文件

如何创建/usr/src/linux-headers{version}文件
EN

Unix & Linux用户
提问于 2016-03-16 06:27:45
回答 1查看 22K关注 0票数 3

我正试图为Nvidia的Jetson TK1板编译一个自定义内核,而且除了内核本身(zImage)之外,我还需要/usr/src/linux-headers-{version}/lib/modules/{version}

但是,我看不出如何创建linux头。我尝试过运行make headers_install,但它似乎没有创建与我在其他/usr/src/linux-headers目录中看到的输出类型相同的输出。

我看到了其他类似的问题,比如这里,但是这假设您构建的版本与运行的版本相同,而我正在尝试使用不同的LOCAL_VERSION构建该版本。

我是从一个"Linux4Tegra“发行版开始的,不过,我正在尝试基于Ubuntu的定制系统。

为了澄清,我试图用我自己的LOCAL_VERSION创建一个内核,即我自己的版本,而不是任何存储库中的现有版本。我想要生成与此匹配的标题。因此,安装linux报头-xxx包不会解决我的问题。

我的问题是,这些包最初是如何从linux源代码中创建的?

当我查看现有头目录中的文件时,它包含对内核版本的引用,所以我假设这是从linux源代码的那个版本生成的。我怎样才能产生这些?当某个人正在编译内核的一个版本时,他们肯定会以某种方式生成这些文件?

EN

回答 1

Unix & Linux用户

发布于 2018-02-18 15:41:48

迟答。我最近遇到了这个问题,我找到了一个可能的答案。

假设您希望将内核头文件安装到/usr/src/linux-headers-4.15.3。编译后的内核源代码树位于/path/to/compiled/linux-4.15.3/

首先,解压缩一个干净的内核源代码树。

代码语言:javascript
复制
tar xvf linux-4.15.3.tar.xz
cd linux-4.15.3/

第二,将.config文件复制到目录中。

代码语言:javascript
复制
cp /path/to/compiled/linux-4.15.3/.config .

第三,运行它,然后删除源目录中的.config文件,以获得一个干净的内核源代码。

代码语言:javascript
复制
make O=/usr/src/linux-headers-4.15.3 oldconfig
rm .config

第四,运行modules_prepare make目标

代码语言:javascript
复制
make O=/usr/src/linux-headers-4.15.3 modules_prepare

最后,删除无用的东西,并复制必要的东西。

代码语言:javascript
复制
rm /usr/src/linux-headers-4.15.3/source
cp /path/to/compiled/linux-4.15.3/Module.symvers /usr/src/linux-headers-4.15.3

现在,/usr/src/linux-headers-4.15.3目录能够构建模块。

文档https://www.kernel.org/doc/Documentation/kbuild/modules.txt告诉我们modules_prepare

这将确保内核包含所需的信息。该目标仅作为一种简单的方法存在,以准备用于构建外部模块的内核源代码树。注意:即使设置了modules_prepare,“Module.symvers”也不会构建CONFIG_MODVERSIONS;因此,需要执行完整的内核构建才能使模块版本化工作。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/270123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档