上述的小技巧需要下面的条件之一:
1.CONFIG_KALLSYMS=y 这样可以通过 /proc/kallsyms 来输出所有的符号。
2.vmlinux
3.System.map
那么在我们编译内核后,可以把对应的 System.map 和已经有的符号进行比较,看看是不是符号不一致的。
如果不一致,具体是哪些符号没有支持,然后再判断是哪一个 config 是正确的。
具体的比较用下面这一个命令即可:
diff <(cat /path/to/System.map.new | sed -e 's/.* //' | sort -u) <(cat /path/to/System.map.old | sed -e 's/.* //'| sort -u)