4

これが取引です。カーネルタイプ(32ビットまたは64ビット)に依存するカーネルモジュールを作成したいと思います。カーネルが32ビットの場合にのみモジュールに含めたいコードの行がいくつかあり、カーネルが64ビットの場合に含める必要のあるコードの行がいくつかあります。

この場合、#if LINUX_VERSION_CODE <KERNEL_VERSION(2,6,26)のようなものはありますか?

4

3 に答える 3

6

CONFIG_X86_64 と CONFIG_X86_32 を確認できます - アーキテクチャが x86 の場合。他のアーキテクチャには、同様の CONFIG オプションがあります。

于 2012-12-12T14:51:03.760 に答える
1

ターミナルでこれを確認してください

$ uname -m
x86_64

バイナリ ファイルをチェックして、システム上で判断します

$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped

システムが. 32-bit_ ただし、システム自体の一部を調べて、それが. たとえば、このように64-bitmultilib64-bit

 $file /sbin/init
/sbin/init: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.16, dynamically linked (uses shared libs), stripped

から参照

http://www.linuxquestions.org/questions/linux-general-1/how-to-check-linux-kernel-is-32-bit-or-64-bit-612352/

于 2012-12-12T14:54:47.370 に答える
0

使用する場合gccは、次のようにテストする_LP64か、次の__LP64__ようにすることが#defineでき1ます。

これらのマクロは、コンパイルが long int とポインターの両方が 64 ビットを使用し、int が 32ビットを使用するターゲット用である場合 (およびその場合にのみ)、値 1 で定義されます。

gccの定義済みマクロについては、こちらをお読みください: http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html

于 2012-12-12T14:55:06.333 に答える