在构建内核代码时查找 linux/android 内核的体系结构信息

在构建内核代码时查找 linux/android 内核的体系结构信息

我正在对内核文件进行修改。如果是 32 位架构,我想加载一个函数;如果是 64 位架构,我想加载另一个函数。是否可以在构建时获取内核中的体系结构信息并基于它加载不同的函数。架构信息存储在哪个位置或从哪里获取信息?谢谢。

答案1

如果您在目标机器本身上进行编译,uname -m则会在大多数机器上为您提供所需的内容。例如在我的 64 位台式机上:

$ uname -m
x86_64

这不会明确告诉您机器是 64 位还是 32 位。它只是一个您必须解释的字符串(例如,使用一系列if/then语句或一个case语句)。

这是 sh 中的一个(非常粗略的)示例:

machine=$(uname -m)
bits=0

case "$machine" in
       *64*) bits=64 ;;
  *[3-6]86*) bits=32 ;;
    *armv7*) bits=32 ;;  # replace with a pattern to match your 32-bit android cpu
    *armv8*) bits=64 ;;  # replace with a pattern to match your 64-bit android cpu
esac

[ "$bits" = 0 ] && echo "Unknown machine type" && exit 1

相关内容