ホームページ  >  に質問  >  本文

ubuntu - Linuxでコンパイルする場合のmakefileコンパイルスクリプトとリンカースクリプトldのコードについて

最近、シンプルな x86 オペレーティング システムの実装に関するチュートリアルを読んでいました。Linux システムにあまり詳しくないため、開発環境を構成するときに、スクリプト ファイル、Makefile、リンカー ld を作成する必要があることがわかりました。 「開発で使っています。とても面白かったです。コードが理解できず、どのように扱ったらよいかわかりません。アセンブリ言語の知識や Linux の操作を理解するにはどのような知識が必要かを先輩方に教えていただければ幸いです。」

これは Makefile コードです: ——————————————————————————————

!メイクファイル

C_SOURCES = $(shell find . -name "*.c")

C_OBJECTS = $(patsubst %.c, %.o, $(C_SOURCES))
S_SOURCES = $(shell find . - name "*.s")
S_OBJECTS = $(patsubst %.s, %.o, $(S_SOURCES))

CC = gcc

LD = ld
ASM = nasm

C_FLAGS = -c -Wall -m32 -ggdb -gstabs -nostdinc -fno-builtin -fno-stack-protector -I include

LD_FLAGS = -T scripts/kernel.ld -m elf_i386 -nostdlib
ASM_FLAGS = -f elf -g -F 刺します

すべて: $(S_OBJECTS) $(C_OBJECTS) リンク update_image

.c.o:

リーリー ###。それで:### リーリー ###リンク:### リーリー

.PHONY:クリーン

クリーン:

リーリー

.PHONY:update_image

update_image:

リーリー
.PHONY:マウントイメージ

マウントイメージ:

リーリー
.PHONY:umount_image

umount_image:

リーリー
.PHONY:qemu

qemu:

リーリー
.PHONY:bochs

bochs:

リーリー
.PHONY:デバッグ

デバッグ:

リーリー #——————————————————————————————————————————————————————————————————

これはリンカー コードです:


——————————————————————————————

/*

kernel.ld -- カーネル形式用に書かれたリンク スクリプト*/

漂亮男人漂亮男人2692日前726

全員に返信(1)返信します

  • 漂亮男人

    漂亮男人2017-06-05 11:12:05

    これには組み立てを知る必要はありません。 Makefile と ld スクリプトを学ぶ必要があります。

    返事
    0
  • キャンセル返事