2010-03-04 109 views
2

我有一個Solaris sparc機器,當我構建我的程序時,它生成應該是64位的32位代碼。如何檢查原因?gcc在sparc上生成32位代碼

$ UNAME -a
的SunOS 5.10溶膠Generic_118833-33 sun4u的SPARC SUNW,太陽火V240
$在/ usr/sfw/bin中/ GCC --version
海合會(GCC)3.4.3(CSL -sol210-3_4-branch + sol_rpath)
Copyright(C)2004 Free Software Foundation,Inc.
這是免費軟件;請參閱複製條件的來源。有保修;沒有
保修;甚至不適用於適銷性或針對特定用途的適用性。

$在/ usr/sfw/bin中/ GCC test.c的
$文件爲a.out
的a.out:ELF 32位MSB可執行SPARC版本1,動態鏈接的,不剝離,可 沒有調試信息$

回答

1

您應該可以使用-m64選項強制執行64位版本。

如果失敗,你可以下載並從SunFreeware.com(下載,gunzip,與pkgadd -d gcc-...-sparc-local安裝)將從/usr/local/bin/gcc運行安裝預編譯GCC軟件包與Solaris 10的64位SPARC的支持。

+0

是的,它變成是32位。但爲什麼?它是否在安裝包時被選中? – Adil 2010-03-04 05:30:37

+1

@Adil與x86_64不同,64位SPARC代碼需要更多內存,而不是32位以上的性能增益,所以最好僅在32位地址空間不足時使用。因此,即使硬件和內核爲64位,SPARC用戶空間默認爲32位。 – ephemient 2010-03-04 05:35:13