我需要构建内核以具有完美的表现
3.10.28-gbc1b510-33899-g9fa745e SMP preempt mod_unload modversions ARMv7
但是在通过modinfo构建和验证某些模块后,它会显示
3.10.28 preempt mod_unload modversions ARMv6
看起来我无法加载模块,因为存在不同的困境。如何构建内核和模块以实现完全相同?我正在使用buildroot。
我创建了这个Shell脚本以准备构建
#!/bin/sh
export PATH=$PATH:/buildroot-2018.02.3/output/host/arm-buildroot-linux-gnueabi/bin:/buildroot-2018.02.3/output/host/bin:/buildroot-2018.02.3/output/host/sbin:/buildroot-2018.02.3/output/host/bin
export LD_LIBRARY_PATH=/buildroot-2018.02.3/output/host/lib
export LIBRARY_PATH=/buildroot-2018.02.3/output/host/lib
export PKG_CONFIG_PATH=/buildroot-2018.02.3/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/pkgconfig
exec /bin/bash
然后我进入文件夹
/buildroot-2018.02.3/output/build/linux-3.10.28/
和
make distclean
make clean
然后复制.config和
make ARCH=arm menuconfig
和
make -j9 ARCH=arm
我使用的是原始的内核konfig,另外选择了一些选项作为模块进行构建,而没有其他任何修改。
答案 0 :(得分:1)
有linux-3.10.28 / arch / arm / Makefile文件。在此文件中有那些定义
arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
我在某个地方找到了可以取代我的建议
arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
使用
arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
我没有评论这两个:
tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
tune-$(CONFIG_CPU_V6K) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
我添加了
-gbc1b510-33899-g9fa745e SMP
作为内核.config中的local_version
和现在由modinfo打印的版本字符串相同。