2014-05-18 217 views
3

我有一個64位系統,但GCC是32位的,當我做什麼告訴32位GCC在64位系統上,使64位二進制

>./gcc -c foobar.c 

它使foobar.o這是64位。好的,但它是如何知道這麼做的?基於它知道什麼樣的環境設置來生成64位對象,以及在哪裏記錄?

想想看,它真的很奇怪,不是嗎?但file實用程序明確指出,gcc是3​​2位,foobar.o是64位。 (我把所有的東西都移到了相同的目錄下,所以不會混淆)。

我也檢查了3個動態鏈接庫,它讀取的內容如下:libc,libm和libz,它們也都是32位。

澄清,我不想知道,如何使它做32位。我想知道,什麼它看着現在,它使它做64.這是我的問題,而不是如何強制它反過來。

+0

你完全確定gcc二進制文件是32位可執行文件嗎? – nos

+0

@nos是的,我檢查了(用'file'工具),實際上,我從32位設置中移除了'gcc'二進制文件(不要問爲什麼)。 –

+1

你用-m64試過了嗎? – perencia

回答

0

當GCC被配置三種不同的系統可以指定:

  • 編譯: - 在GCC將會對系統進行構建(可能不是 有關你的問題)
  • 主持人: - 系統其中GCC將會 被執行(在你的情況下32位)
  • 目標:將被執行,其中二進制文件,通過GCC產生打算系統(在64位你的情況)

你可以看到你的GCC是如何通過運行配置:

gcc -v 

命令(尋找 - {構建,託管,目標}選項。

相關問題