这是交易。 我想写一个依赖于内核types(32或64位)的内核模块。 有一些我想要包含在模块中的代码行,当且仅当内核是32位时,如果内核是64位,则应该包括一些代码行。
这种情况下是否有像#if LINUX_VERSION_CODE <KERNEL_VERSION(2,6,26)?
为什么Linux系统调用返回types“长”?
Windows显示驱动程序挂钩,64位
如何访问我的英特尔芯片组的特定registry?
embedded式linux驱动程序加载
通过IOCTL将结构体传递给设备驱动程序
你可以检查CONfig_X86_64和CONfig_X86_32 – 如果arch是x86。 对于其他体系结构,还有类似的CONfig选项。
在终端上检查
$ 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
如果系统是multilib话,那么当然可以在64-bit系统上运行32-bit应用程序。 但是您可以查看系统本身的某些部分来验证它是否是64-bit 。 像这样,例如
$file /sbin/init /sbin/init: ELF 64-bit LSB executable,for GNU/Linux 2.6.16,stripped
引用自
http://www.linuxquestions.org/questions/linux-general-1/how-to-check-linux-kernel-is-32-bit-or-64-bit-612352/
如果使用gcc你可以测试_LP64或__LP64__为_LP64 __LP64__为1 :
如果(且仅当)编译器针对long int和pointer都使用64位且int使用32位的目标,则这些宏定义为值为1。
对于gcc的预定义的宏,请阅读这里: http : //gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。