>  Q&A  >  본문

ubuntu - Linux에서 컴파일할 때 makefile 컴파일 스크립트 및 링커 스크립트 ld의 코드 정보

최근에 간단한 x86 운영체제 구현에 대한 튜토리얼을 읽다가 리눅스 시스템에 별로 익숙하지 않아서 개발 환경을 구성하는 걸 보니 개발에 사용되는 스크립트 파일과 Makefile, 링커 ld를 작성해야 하는데, 정말 이해할 수 없었습니다. 이 코드를 어떻게 처리해야 할지 모르겠습니다. 이해하기 위해 배워야 할 어셈블리 언어 지식과 Linux 작업이 무엇인지 선배님들이 알려주셨으면 좋겠습니다.

메이크파일 코드는 다음과 같습니다. —————————————————————————————

!메이크파일

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-buildin -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:

으아악

.s.o:

으아악

링크:

으아악

.PHONY:깨끗함

깨끗함:
으아악

.PHONY:업데이트_이미지

업데이트_이미지:
으아악

.PHONY:마운트_이미지

마운트_이미지:
으아악

.PHONY:umount_image

umount_image:
으아악

.PHONY:qemu

qemu:
으아악

.PHONY:bochs

bochs:
으아악

.PHONY:디버그

디버그:
으아악

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

링커 코드는 다음과 같습니다. —————————————————————————————
/*

ENTRY(시작)

SECTIONS
{
으아악

}

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

漂亮男人漂亮男人2692일 전725

모든 응답(1)나는 대답할 것이다

  • 漂亮男人

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

    이를 위해 어셈블리를 알 필요는 없습니다. Makefile과 ld 스크립트를 배워야 합니다.

    회신하다
    0
  • 취소회신하다