私はOS X 10.12を実行しており、基本的なテキストベースのオペレーティングシステムを開発しています。私はブートローダを開発しており、うまく動作しているようです。私の唯一の問題は、カーネルを純粋なバイナリにコンパイルしようとすると、リンカが動作しなくなることです。私はいくつかの調査をしましたが、これはOS XがGNUリンカーではなくDarwinリンカーを実行していることが原因であると考えています。このため、私はGNU binutilsをダウンロードしてインストールしました。しかし、それはまだ動作しません...ここでDarwinリンカの代わりにGNUリンカを使用するにはどうすればよいですか?
は私のカーネルです:
void main() {
// Create pointer to a character and point it to the first cell of video
// memory (i.e. the top-left)
char* video_memory = (char*) 0xb8000;
// At that address, put an x
*video_memory = 'x';
}
そして、私はそれをコンパイルしようとすると、これは次のとおりです。
Hazims-MacBook-Pro:32 bit root# gcc -ffreestanding -c kernel.c -o kernel.o
Hazims-MacBook-Pro:32 bit root# ld -o kernel.bin -T text 0x1000 kernel.o --oformat binary
ld: unknown option: -T
Hazims-MacBook-Pro:32 bit root#
私は方法を知っているのが大好きですこの問題を解決する。あなたの時間をありがとう。
余分なスペースがあり、 '-T text 0x1000'の' = '記号が欠けています。これは' -Ttext = 0x1000'でなければなりません。マニュアルを参照してください。それでも動作しない場合は、マニュアルに従って再度 '--section-start = .text = 0x1000'を試してください。 – Jester
@Jesterあなたが言ったことを試してみると、このエラーが表示されます: 'ld:unknownオプション:--section-start = .text = 0x1000' –
'ld --version'とは何ですか? – Jester