首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何只编译Linux内核的net/ipv4 4?

如何只编译Linux内核的net/ipv4 4?
EN

Unix & Linux用户
提问于 2020-06-28 11:05:22
回答 1查看 497关注 0票数 0

最初,我的方法是从头开始重新编译整个内核,但是当我发现它需要大量的磁盘空间时,所有的希望都破灭了。

现在,我正在努力弄清楚如何只编译其中的一部分。

我修改的文件是net/ipv4 4/tcp_ipv4.c

然后我跟着步走,但在中间迷失了方向,

代码语言:javascript
复制
Downloaded kernel source files to /home/linux
ran cp /boot/config-$(uname -r) .config
make oldconfig
make scripts prepare modules_prepare
apt-get install linux-headers-$(uname -r)
make -C . M=net/ipv4
make net/ipv4/tcp_ipv4.c

我不知道下一步该做什么,因为Stackoverflow上找到的答案描述了如何构建定制的模块。

Stackoverflow (链接)上的一个答案描述了它无法完成,并且只能编译整个内核。

“这是不可能的。只需编译整个内核。在第一次编译之后,make将确保只重新编译修改过的文件,这样以后的构建就会很快。”

我曾考虑过使用Google作为HDD进行完整编译,但似乎缺乏这样做的选择。

我的最后一个选择是调整整个服务器的大小。

编辑:

我通过CD输入/net/ipv4 4dir并尝试

使-C /lib/modules/$(uname -r)/build M=$(pwd) modules_install

它的输出

代码语言:javascript
复制
  Building modules, stage 2.
  MODPOST 61 modules
FATAL: parse error in symbol dump file
make[1]: *** [scripts/Makefile.modpost:94: __modpost] Error 1
make: *** [Makefile:1632: modules] Error 2
make: Leaving directory '/usr/src/linux-headers-5.4.0-26-generic'
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-06-28 15:30:26

如果您查看net/ipv4/Makefile,您会发现tcp_ipv4.oobj-y的一部分,这意味着它只能作为内核的一部分构建,而不能作为模块构建。

如果您希望将您的更改考虑在内,则必须重新构建完整的内核。由于您缺少磁盘空间,所以您只能构建内核,安装它,然后清理构建树并构建模块,并安装它们;这将需要更少的磁盘空间。

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

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

复制
相关文章

相似问题

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