- 토요일 발표 자료
- 링커(ld) 및 objcopy 옵션 부분 추가했습니다.
[질문]
아래와 같이 arch/x86_64/Makefile에서 정의된 head-y와 extra-y은 거의 비슷한데 차이점은 무엇인가??
head-y = head.o head64.o init_task.o
extra-y = head.o head64.o init_task.o vmlinux.lds
우선 변수 extra-y에 대해서 다시 설명드리면, 요놈은 make를 이용해서 컴파일할때, 어떻게 해야되는지를 설명주는 놈입니다. 따라서 extra-y 변수에 정의된 오브젝트들은
make가 컴파일 할때, 아래와 같이 해당 디렉토리에서 컴파일을 한후, built-in.o로 묶지말고,
gcc (중략) -c -o arch/x86_64/kernel/head.o arch/x86_64/kernel/head.S
gcc (중략) -c -o arch/x86_64/kernel/had64.o arch/x86_64/kernel/head64.c
gcc (중략) -c -o arch/x86_64/kernel/init_task.o arch/x86_64/kernel/init_task.c
gcc (중략) -o arch/x86_64/kernel/vmlinux.lds arch/x86_64/kernel/vmlinux.lds.S
컴파일된 오브젝트(vmlinux.lds 제외)를 그대로 두라는 것입니다.
이에 반해, head-y는 vmlinux를 만들때, 맨먼저 링킹되는 아키텍처 종속적인 오브젝트들을 지정할 때 쓰는 변수입니다. 따라서, vmlinux를 링킹할 때 쓰이는 변수입니다.
댓글 0
.