交叉编译uClibc找不到一些linux内核头文件

时间:2017-07-28 16:02:49

标签: gcc linux-kernel embedded-linux uclibc

这是一个快速描述,后面是详细信息。 我尝试为ARM EABI交叉编译uClibc。我有自己编译的Linux内核,我解压缩了头文件。我把它放在一个文件夹里。在uClibc“.config”文件中,我将变量KERNEL_HEADERS =设置为正确的文件夹。实际上,在编译期间,标题会被发现到某一点。这是一个在中间找到并中断的示例:编译文件

“的libc / INET / if_index.c”

该文件将在每个文件中生成一系列链接包含,如下所示:

“libc / inet / netlinkaccess.h”(这是一个以下linux头的#include)

“kernel_hdr / linux / rtnetlink.h”(这个#include下一个)

“kernel_hdr / linux / netlink.h”(这一个#include for next one)

“kernel_hdr / linux / kernel.h”(这个尝试并失败#include)

这是打破链条的#include <asm/types.h>。这是第一个不是#include <linux/xxx.h>而是<asm/xxx.h>的人。文件asm / types.h存在但未找到。没有警告没有错误。它只是说

“错误:未知类型名称'__kernel_long_t'”

该类型是在破碎的系列包含中定义的。我甚至提出了一些大的语法错误,看它是否读取它。不!我认为处理内核头文件夹结构识别存在问题。我试图将内核头与uClibc常规头(... uClibc / include /)合并。无论我如何在.config文件中设置KERNEL_HEADERS =(空路径或完整路径),我都会得到完全相同的行为。我不知道如何解决这个问题。

以下是有关我的设置的详细信息:

工作站:Ubuntu 16.04 LTS

uClibc是GIT 3天前下载的最新版本

Linux内核版本4.9.0来自Xilinx git。 (我在Zynq双Cortex A9上工作)

GCC ARM EABI来自Xilinx SDK 2017.1。

使用该工具链,我成功编译了一个自定义FSBL(第一阶段引导加载程序),一个自定义Linux内核(我跳过u-boot,FSBL直接加载内核),设备树和包装整个事情,它在硬件上运行rootfs。我现在正在构建一个自定义rootfs(busybox成功,dropbear等)唯一的失败是这个uClibc,我无法编译,因为它没有找到一些头文件中的一些包括虽然它们存在。

要构建uClibc,我使用uClibc文件夹:

make menuconfig

make clean

make CROSS=arm-linux-gnueabi-

如何让uClibc构建查找所有内核头文件?

0 个答案:

没有答案
相关问题