linux在代码里怎么判断出来是32位系统还是64位系统

时间:2021-03-13 09:04:08
比如我编了一个32位程序。这个32位程序要判断出来所在的系统是32位还是64位,然后分别干一些事情

5 个解决方案

#1


查看系统位数的shell命令:
1.getconf LONG_BIT
2.uname -a
3.arch
4. file filename
把输出做一个判断就行了吧。

#2


请楼主结贴给分,不然回答你问题的人会越来越少!!!

#3


首先你的电脑的字必须能处理8字节,也就是64位的硬件寄存器64位,能寻址2*64方。然后向下兼容,你64位操作系统,可以编写,32位应用程序。一个是编译器给一个伪指令。告诉CPU这是32位应用程序。CPU便会用32位处理模式,比如一些32位的一些指令,执行这些代码。

#4


兼容性带来了好处,也带来了坏处,好处是CPU很强大,可以同时支持16位指令和32位指令,运行新老程序畅通无阻。但坏处就是CPU也不知道您想生成16位,还是32位机器码,,需要明确告诉编译器一些信息。为此,编译器提供了伪指令bits,用它来向编译器传达:我下面的指令都要编译成xx位的,bits的指令格式是[bits 16]或[bits 32]。

#5


这事儿得编译器决定吧,你还是老老实实的编译出两套程序来的快。

#1


查看系统位数的shell命令:
1.getconf LONG_BIT
2.uname -a
3.arch
4. file filename
把输出做一个判断就行了吧。

#2


请楼主结贴给分,不然回答你问题的人会越来越少!!!

#3


首先你的电脑的字必须能处理8字节,也就是64位的硬件寄存器64位,能寻址2*64方。然后向下兼容,你64位操作系统,可以编写,32位应用程序。一个是编译器给一个伪指令。告诉CPU这是32位应用程序。CPU便会用32位处理模式,比如一些32位的一些指令,执行这些代码。

#4


兼容性带来了好处,也带来了坏处,好处是CPU很强大,可以同时支持16位指令和32位指令,运行新老程序畅通无阻。但坏处就是CPU也不知道您想生成16位,还是32位机器码,,需要明确告诉编译器一些信息。为此,编译器提供了伪指令bits,用它来向编译器传达:我下面的指令都要编译成xx位的,bits的指令格式是[bits 16]或[bits 32]。

#5


这事儿得编译器决定吧,你还是老老实实的编译出两套程序来的快。