簡體   English   中英

32位gcc和64位gcc與-m32選項有什么區別?

[英]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.cgcc_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM