2012-04-23 12 views
4

私はいくつかの "フリースタンディング"(What is the name for a program running directly without an OS?)コードを書こうとしており、OS-Xリンカはリンカスクリプトやフラットバイナリ出力をサポートしていないので、代わりにGNUリンカーを使用することをお勧めします。OS-X上のGNUリンカ-GAS

GNUリンカーだけをインストールしてコンパイルする方法はありますか?

コンパイルされたGNUリンカは、OS-XバージョンのGASアセンブラで出力されるオブジェクトファイルを理解できるでしょうか?

リンカをコンパイルできない場合、GCCをコンパイルする最良の方法は何ですか?

注:パッケージシステムを使用せずにコンパイルします。

答えて

2

私は私のMakefileでこれらを使用して、私の実験的なペットのカーネルプロジェクトで、この目的のためにMacPortsのからcross/i386-elf-gcccross/i386-elf-binutilsポートを使用しています:

CC=    i386-elf-gcc-4.3.2 
AS=    i386-elf-as 
LD=    i386-elf-ld 

私もミックスしようとし、一致していません異なるツールチェーンのコンポーネント あなたはそれをどうにかして稼働させることができるかもしれませんが、 の場合、クロスコンパイルツールの「クリーン」セットをインストールして、お互いにうまく合っていることが合理的に確かであれば問題はないようです。

+2

追加:GNUリンカはMach-Oフォーマットを受け入れないので、混在とマッチは不可能です。しかし、binutilsにはリンカとアセンブラの両方が含まれているので、両方とも持っていない理由はありません。アセンブリ言語にgccをインストールする必要はありません。 – ughoavgfhw

+0

GCCは必要ありません。組み立てやリンクにGCCフロントエンドを使用する場合を除いて、おそらく例外的です。事前処理されたアセンブリファイル( '.S')を使用したい場合に使用します。 –

+0

@ughoavgfhw私はこのプロジェクトのためにC +アセンブリをマージしたいかもしれないので、binutilsだけでは不十分です。 – Hawken

関連する問題