2009-04-04 11 views
1

나는 Msys를 사용하여 Linux에서 작성한 홈 브루 잉 커널을 빌드하고 있습니다. 리눅스는 바이너리 형식으로 ELF를 사용했으며 Msys는 PE를 사용합니다. Multiboot 스펙을 사용하여 Grub로 부팅 할 수 있도록 소스 설정이 있습니다. 빌드가 끝나면 정의되지 않은 기호가 나타납니다.커널 이미지를 ELF에서 PE로 변환

init.o:init.S:(.text+0x14): undefined reference to `edata' 

main.o:main.c:(.text+0x121): undefined reference to `_alloca' 

main.o:main.c:(.text+0x126): undefined reference to `__main' 

../../lib\libkern.a(mem.o):mem.c:(.text+0x242): undefined reference to `_end' 

../../lib\libkern.a(mem.o):mem.c:(.text+0x323): undefined reference to `_end' 

이러한 기호는 ELF 지향 기호로 표시됩니다. 누군가 PE 세계에서 어떻게 처리되어야하는지에 대해 나에게 조언 할 수 있다면. 등가물이 있다면 그것은 많은 도움이 될 것입니다!

답변

0

다른 개체 파일 형식을 변환하는 도구가 있지만 필요한 작업을 수행하지 못할 수 있습니다.

컴파일러 (gcc)를 교차 컴파일러로 구성하여 Msys 환경에 맞는 형식을 생성해야한다고 가정합니다.

+0

아니요, 저는 커널을 컴파일하려고합니다. 저는 elf 인 linux에서 컴파일했습니다. 이제는 msys 아래에서 컴파일을 시작하려고합니다. 이것은 pe입니다. –

+1

커널을 컴파일한다는 의미는 아니지만, 컴파일러가 실행중인 플랫폼과 다른 플랫폼으로 컴파일하는 경우 해당 대상 플랫폼 (예 : Msys)에 대한 교차 컴파일러가 필요합니다. – lothar