カーネルファイルを修正しています。 32ビットアーキテクチャの場合は1つの関数をロードし、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