簡體   English   中英

gcc如何確定默認情況下是否生成32位或64位可執行文件?

[英]How does gcc determine if to generate a 32-bit or 64-bit executable file by default?

在我的64位Solaris中,默認情況下我的gcc將生成32位可執行文件(用於生成64位可執行文件,需要添加“-m64”編譯選項)。 在我的64位Linux中,我的gcc默認會生成64位可執行文件。 我試圖在gcc網站上找到原因,但不幸的是,有很多相關的選項(--with-arch, - with-cpu, - with-abi等)。 從文檔中,我看不出哪個可以確定生成32位或64位可執行文件。

有人可以就這個問題提出一些建議嗎?

這取決於編譯器的安裝方式,這實際上歸結為分發和可能的安裝選項。 如果有任何疑問並需要確定性,只需包含-m選項; 當32位是默認值時使用-m32並沒有什么壞處,而當64位是默認值時同樣適用於-m64。

編譯gcc時,使用--target選項指定要為其生成編譯器的相應系統。 要了解GCC支持的所有目標,您可以通過gcc / config /文件夾檢查gcc / configure文件或oogle。 生成編譯器后,“compile”命令,即gcc source.c -o object.o將始終為已編譯gcc的默認目標生成對象。

但是,您可以為指定目標周圍的各種變化生成對象。 例如,您可以為64位系統生成32位和64位二進制文​​件。

例如,configure --target = mips64-elf將為64位mips目標生成gcc編譯器。 生成編譯器后,無論何時鍵入gcc -c source.c -o object.o,都將生成64位mips目標文件。

因此,如果您在所討論的兩個系統上輸入gcc -v,您將看到gcc的配置如何開始,這應該回答您的問題。

在您提到的文檔中 ,請grep“enable-targets”選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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