[英]What is difference between 32-bit gcc and 64-bit gcc with -m32 option?
我的團隊最近一直在研究JNI,因此我們遇到了有關32位和64位架構的不同問題。 我們來舉個例子( temp.c
)。
#include <stdio.h>
void main(){
printf("long=%d\n",sizeof(long));
}
gcc_32_bit temp.c
和gcc_64_bit -m32 temp.c
之間有什么區別嗎?
案例測試:
案例1:使用gcc temp.c
在64位ubuntu上編譯的代碼。 輸出: 64位ubuntu上的long=8
。
案例2:使用gcc -m32 temp.c
在64位ubuntu上編譯的代碼。 輸出: 64位ubuntu上的long=4
。
情況3:使用/usr/local/gcc-4.8.1-for-linux64/bin/x86_64-pc-linux-gcc temp.c
在64位MAC(使用的64位交叉編譯器 )上編譯的代碼。 輸出: 64位ubuntu上的long=8
。
案例4:使用/usr/local/gcc-4.8.1-for-linux32/bin/i586-pc-linux-gcc temp.c
在64位MAC(使用的32位交叉編譯器 )上編譯的代碼。 輸出: Error: cannot run
在64位ubuntu上Error: cannot run
。
我們使用MAC交叉編譯器,因為我們沒有32位linux機器。
這看起來有點奇怪,但它已經開始無處可尋。
正如amdn在上面的評論中發布的那樣,可能是由於某些32位庫丟失了。 由於它沒有提前工作,我安裝了gcc-multilib和Ubuntu的一些自動更新,它已經開始工作了。
謝謝大家的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.