首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为定制Linux2.6.18配置C工具链的问题

为定制Linux2.6.18配置C工具链的问题
EN

Stack Overflow用户
提问于 2013-02-01 15:18:52
回答 2查看 1.5K关注 0票数 0

我有一个定制的Linux内核,由硬件供应商根据2.6.18版本进行修改。我需要使用uClibc的最新版本为MIPS arch生成一个新的工具链。

我选择了工具交叉凳-ng来简化这个过程,但是它在生成过程中失败了。下面是错误部分的日志:

代码语言:javascript
复制
[INFO ]  =================================================================
[INFO ]  Installing kernel headers
[DEBUG]    Using kernel's headers_install
[EXTRA]    Installing kernel headers
[DEBUG]    ==> Executing: 'make' '-C' '/home/myuser/sources/custom-linux/toolchain/.build/src/linux-custom' 'O=/home/myuser/sources/custom-linux/toolchain/.build/mipsel-unknown-linux-uclibc/build/build-kernel-headers' 'ARCH=mips' 'INSTALL_HDR_PATH=/home/myuser/x-tools/mipsel-unknown-linux-uclibc/mipsel-unknown-linux-uclibc/sysroot/usr' 'V=0' 'headers_install' 
[ALL  ]    make[1]: Entering directory `/home/myuser/sources/custom-linux/stblinux-2.6.18'
[ALL  ]      CHK     include/linux/version.h
[ALL  ]      UPD     include/linux/version.h
[ALL  ]    *** Error: Headers not exportable for this architecture (mips)
[ERROR]    make[2]: *** [headers_install] Error 1
[ERROR]    make[1]: *** [headers_install] Error 2
[ALL  ]    make[1]: Leaving directory `/home/myuser/sources/custom-linux/stblinux-2.6.18'
[ERROR]  
[ERROR]  >>
[ERROR]  >>  Build failed in step 'Installing kernel headers'
[ERROR]  >>        called in step '(top-level)'
[ERROR]  >>
[ERROR]  >>  Error happened in: CT_DoExecLog[scripts/functions@257]
[ERROR]  >>        called from: do_kernel_install[scripts/build/kernel/linux.sh@112]
[ERROR]  >>        called from: do_kernel_headers[scripts/build/kernel/linux.sh@91]
[ERROR]  >>        called from: main[scripts/crosstool-NG.sh@632]
[ERROR]  >>
[ERROR]  >>  For more info on this error, look at the file: 'build.log'
[ERROR]  >>  There is a list of known issues, some with workarounds, in:
[ERROR]  >>      '/home/myuser/.local/share/doc/crosstool-ng/ct-ng.hg+default-20f2459b97bf/B - Known issues.txt'
[ERROR]  
[ERROR]  (elapsed: 41:41.63)

这个问题似乎与*headers_install*规则有关。我认为它是在内核的特定版本中引入的。有趣的是如果我跑

代码语言:javascript
复制
make ARCH=mips INSTALL_HDR_PATH=... headers_install

标头会安装得很好。这个问题似乎发生在使用O=参数时。有人知道这是干什么用的吗?这个问题有解决办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-02 23:18:23

问题是这个Linux版本中不存在headers_install规则。它包含在2.6.19.1中。

现代Linux内核(基于2.6.19.1和更新版本)通过"make headers_install“命令导出内核头。

https://www.kernel.org/doc/index-old.html#3.2.2.3.1

由于buildroot希望这个规则存在,我猜如果没有自定义修补,它就无法工作。

票数 0
EN

Stack Overflow用户

发布于 2014-05-01 21:39:34

构建交叉编译器/二进制程序通常非常困难,而且不允许您测试程序。

虚拟机非常慢,并且创建了很强的分离,这使得主机很难在VM之间共享文件。

最简单的解决方案是Qemu-用户静态:系统调用和指令以用户模式包装到本机内核。

下载或解压根目录。

把它复制到你真正根目录的一个子文件夹。

将qemu-user-( mips arch的名称)-static复制到目标目录的根目录。

通过执行/bin/bash将/etc/conv.conf复制到/your_path_ to _target/etc/conv.conf Chroot。

使用rootfs,就像使用真正的mips一样。机器。

事情变得非常简单:许多库由于硬编码路径等原因而没有编译(您将面临许多问题,比如交叉编译中的问题)。在这里,一切都发生了,就好像您以本地方式构建包一样。

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

https://stackoverflow.com/questions/14649410

复制
相关文章

相似问题

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