gpt4 book ai didi

linux - 构建 busybox,包括内核头文件、要包含哪些文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:59 25 4
gpt4 key购买 nike

我正在使用linux3.3,最近在为新命令构建busybox时,发现添加的busybox源文件使用linux内核头文件。

所以我查找了互联网并执行了“make headers_install ARCH=.. CROSS_COMPILE=.. INSTALL_HDR_PATH=..”来提取可用于用户空间程序的 header 。

然后我使用新的头文件而不是sparc-snake-linux/sys-include下的文件。

但是我必须将一些丢失的文件从 sys-include 复制到新的头目录,并且必须将一些丢失的定义从 sys-include 文件复制到新头文件中的相应文件。(我在互联网上的某个地方读到此“make headers_install”在 linux2.6 左右后未升级)

这是我应该做的吗? (为什么会丢失一些文件?我猜这是因为 'make headers_install' 维护得不好,并且对于 2.6 之后的版本不能很好地工作?我是对的吗?)

使用这种方法,我已经删除了数十个“未定义”错误,但现在我看到 sparc-snake-linux/sys-include (当然是新的清理和增强版本)和 sparc-snake-linux/include 中的文件之间存在一些定义冲突。应该使用什么版本?

如果我成功编译(通过修复头文件问题),我是否必须使用这个新头文件再次构建 glibc? (恐怕是这样。我在 busybox 中使用 glibc)

任何帮助将不胜感激。

谢谢

添加:我使用上面的命令提取了新的头文件,并使用新添加的命令(路由和其他 IP 相关功能)构建了 busybox。它工作正常,它不起作用的原因是我为 busybox 定义了变量 KERNEL ,这是不应该做的(因为 busybox 不是内核代码,而是用户程序)。

最佳答案

我使用上面的命令提取了新的头文件,并使用新添加的命令(路由和其他 IP 相关功能)构建了 busybox。它工作正常,但它不起作用的原因是我愚蠢地为 busybox 定义了一段时间的变量 _KERNEL_ ,这是不应该做的(因为 busybox 不是内核代码,而是用户程序)。
当你使用
回声“”| arch-abc-linux-gcc -o/tmp/tmp.o -v -x c -
您可以看到标准包含路径是什么。如果交叉编译器是为了在Linux上编译应用程序(如上面的),它将在标准包含路径中包含Linux系统头路径。将其替换为新提取的 header 路径。我所做的是使用 -nostdinc 选项并显式提供包含路径。

关于linux - 构建 busybox,包括内核头文件、要包含哪些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25404495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com