32位gcc和64位gcc与-m32选项有什么区别?

时间:2017-04-25 07:49:38

标签: c macos ubuntu cross-compiling cpu-architecture

我的团队最近一直致力于JNI,因此我们遇到了有关32位和64位架构的不同问题。我们举一个例子(temp.c)。

#include <stdio.h>
void main(){
  printf("long=%d\n",sizeof(long));
}

gcc_32_bit temp.cgcc_64_bit -m32 temp.c之间有什么区别吗?

案例测试:

使用gcc temp.c在64位ubuntu上编译的

案例1:代码。 64位ubuntu上的输出 long=8

使用gcc -m32 temp.c在64位ubuntu上编译的

案例2:代码。 64位ubuntu上的输出 long=4

使用/usr/local/gcc-4.8.1-for-linux64/bin/x86_64-pc-linux-gcc temp.c在64位MAC(64-bit cross compiler used)上编译的

案例3:代码。 64位ubuntu上的输出 long=8

使用/usr/local/gcc-4.8.1-for-linux32/bin/i586-pc-linux-gcc temp.c在64位MAC(32-bit cross compiler used)上编译的

案例4:代码。 64位ubuntu上的输出 Error: cannot run

我们正在使用MAC交叉编译器,因为我们没有32位Linux机器。

1 个答案:

答案 0 :(得分:0)

看起来有点奇怪,但它已经开始无处可寻。

在上面的评论中发布了amdn,可能是由于32位的某些库丢失了。由于它没有提前工作,我安装了gcc-multilib和Ubuntu的一些自动更新,它已经开始工作了。

谢谢大家的帮助。