2013-12-14 75 views
3

是否有可能編譯一個gcc(前端),二進制文件,支持多種目標體系結構,這是我可以在命令行中選擇,這樣的:GCC是否支持多種目標體系結構?

$ gcc --architecture=linux-i386 ... 
$ gcc --architecture=freebsd-arm ... 
$ gcc --architecture=darwin-amd64 ... 

我知道這是可能的堆積gcc作爲交叉編譯器,但是可以使用命令行標誌來選擇目標體系結構,而無需編寫一個包裝腳本,該腳本爲每個體系結構啓動不同的gcc二進制文件?

對於i386和amd64 -m32-m64似乎做的伎倆,但我如何選擇ARM等?請注意,-march=看起來對我無用,我無法將它從i386更改爲amd64。

+0

如果你想切換到ARM,通常你會使用交叉編譯器。有沒有什麼特別的理由讓你把它當作編譯器標誌而不是別名? –

回答

2

簡答題是「否」,你不能。有一些交叉編譯器的風格,但是爲了能夠支持一堆目標的一個二進制文件,它需要工具體積非常龐大,並且需要系統頭文件。

+0

'clang'確實很好,gcc也有一個(非常)長遠的目標。 –