我正在对内核文件进行修改。如果是 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