我正在尝试使用来自' 09的buildroot包构建交叉编译工具链。不幸的是,我没有在目标平台上升级现有的busybox系统。
背景: 目标平台在arm926EJ(5TE架构)上运行。它显然是用uclibc 0.9.29库构建的。 平台上的内核linux头文件是2.6.16
由于我无法从头开始升级busybox图像,我想制作单独的二进制文件并通过tftp上传它们,并通过telnet shell执行它们。
我已经使用4.5内核头文件和1.0.14 uclibc库成功编译了最新的buildroot工具链。 在成功编译了一个基本的helloworld程序并通过tftp将其上传到平台后,我能够执行该程序,但没有看到任何输出。
尽管stdout和telnet终端可能存在一些问题,但我认为它很可能是uclibc库之间不同版本的兼容性问题。
问题: 在我的主机系统上,我有linux版本4.6.3的linux内核头文件。 为了解决上面提到的uclibc兼容性问题,我试图从旧的buildroot包构建一个新的工具链。但是在编译的早期,我有一个错误,指出:
Makefile:1601:混合隐式和普通规则:不推荐使用语法 CHK包含/ linux / version.h HOSTCC脚本/ unifdef scripts / unifdef.c:209:25错误:' getline'
的冲突类型等等 在网上进行了一些研究并且已经预料到它会发生之后,它似乎是不同内核版本之间的冲突。
我问这个伟大的社区,他们可以想出任何解决这个问题的方法,而无需使用古老版本的linux重建主机系统。如果有任何我遗漏或不完全理解的细节,请随时通知我。我对建议很开放。
我考虑使用VM中的旧标头构建主机系统。如果这是一个很好的方法,那么使用好的发行版的任何建议都会很酷。
我不反对抛弃buildroot以获得更好的工具,或者从头开始构建CC,但如果是这样的话,我仍然担心内核版本冲突。
非常感谢任何帮助。