반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

꿈꾸는 사람.

Linux kernel 2.6.30 빌드 오류. 해결 방법 본문

IT/Linux

Linux kernel 2.6.30 빌드 오류. 해결 방법

현무랑 니니 2013. 10. 27. 01:00
반응형


리눅스를 공부하는 과정에서 커널 빌드는 중요한 단계이다.

리눅스 커널을 kernel.org 등의 웹 사이트에서 tar.gz으로 압축된 형태로 초기 커널 소스를 받는다.

이 커널 소스의 압축을 푼 상태를 커널 초기 상태로 빌드를 하면 여려 오류가 발생하는데 이후 패치를 적용하여 해결할 수 있다.

패치를 적용하지 않고 바로 문제를 해결하는 방법은 설정 파일을 변경하거나 빌드 관련 파일들을 수정하면 된다.


Linux kernel 2.6.30 빌드에서 발생한 오류 중 아래 3가지에 대한 해결책은 다음과 같다.


Error: .size expression for do_hypervisor_callback does not evaluate to a constant

빌드 오류 메시지

~$ make all

/tmp/ccoXv339.s: Error: .size expression for do_hypervisor_callback does not evaluate to a constant

make[1]: *** [arch/x86/kernel/entry_64.o] 오류 1

make: *** [arch/x86/kernel] 오류 2


압축 해제한 커널 소스 트리의 루트 디렉토리에 있는 .config 파일 수정.

#CONFIG_XEN=y

CONFIG_XEN=n

젠(Xen)은 IA-32, x86-64, 아이테니엄, PowerPC 970 등의 아키텍처를 지원하는 하이퍼바이저이다. 

여러 게스트 운영체제를 한 컴퓨터에서 동시 실행하는 데 쓰인다.

커널 설정에서 이를 사용하지 않도록 수정하여 오류를 해결한다.


gcc: error: elf_x86_64: No such file or directory

빌드 오류 메시지

~$ make all

...

  CC      arch/x86/vdso/vgetcpu.o

  CC      arch/x86/vdso/vvar.o

  VDSO    arch/x86/vdso/vdso.so.dbg

gcc: error: elf_x86_64: 그런 파일이나 디렉터리가 없습니다

make[1]: *** [arch/x86/vdso/vdso.so.dbg] 오류 1

make: *** [arch/x86/vdso] 오류 2


arch/x86/vdso/Makefile 파일 수정.

#VDSO_LDFLAGS_vdso.lds = -m elf_x86_64 -Wl,-soname=linux-vdso.so.1 \

                 -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096

VDSO_LDFLAGS_vdso.lds = -m64 -Wl,-soname=linux-vdso.so.1 \
                 -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096

'-m elf_x86_64'를 '-m64'로 변경하여 해결한다.


gcc: error: elf_i386: No such file or directory

빌드 오류 메시지

~$ make all

...

  CHK     include/linux/version.h

  CHK     include/linux/utsrelease.h

  SYMLINK include/asm -> include/asm-x86

  CALL    scripts/checksyscalls.sh

  CHK     include/linux/compile.h

  VDSO    arch/x86/vdso/vdso.so.dbg

  OBJCOPY arch/x86/vdso/vdso.so

  AS      arch/x86/vdso/vdso.o

  LDS     arch/x86/vdso/vdso32/vdso32.lds

  AS      arch/x86/vdso/vdso32/note.o

  AS      arch/x86/vdso/vdso32/int80.o

  VDSO    arch/x86/vdso/vdso32-int80.so.dbg

gcc: error: elf_i386: 그런 파일이나 디렉터리가 없습니다

make[1]: *** [arch/x86/vdso/vdso32-int80.so.dbg] 오류 1

make: *** [arch/x86/vdso] 오류 2


arch/x86/vdso/Makefile 파일 수정.

#VDSO_LDFLAGS_vdso32.lds = -m elf_i386 -Wl,-soname=linux-gate.so.1 

VDSO_LDFLAGS_vdso32.lds = -m32 -Wl,-soname=linux-gate.so.1 

'-m elf_i386'를 '-m32'로 변경하여 해결한다.


반응형
Comments