일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 손민한
- 블로그
- 데이터베이스
- NC다이노스
- ubuntu 12.04
- 야구
- 국정원
- Linux
- Tizen
- 애플
- 해외직구
- 정보시스템감리사
- 디자인 패턴
- 김경문
- arm
- 인공지능
- 뉴스타파
- ubuntu
- 리뷰
- NC 다이노스
- 프로야구
- mysql
- 우분투
- 타이젠
- 문파문파 공략
- 태그를 입력해 주세요.
- 단통법
- 안드로이드
- 문파문파
- 조세피난처
- Today
- Total
꿈꾸는 사람.
Linux kernel 2.6.30 빌드 오류. 해결 방법 본문
리눅스를 공부하는 과정에서 커널 빌드는 중요한 단계이다.
리눅스 커널을 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'로 변경하여 해결한다.
'IT > Linux' 카테고리의 다른 글
[VMware] Ubuntu 11.10 가상 머신 만들기. (0) | 2013.12.06 |
---|---|
[ARM] 크로스 컴파일러 설치. (0) | 2013.11.06 |
[FTP Server] 우분투에 ftp 서버 설치. (0) | 2013.08.21 |
[Linux] Ubuntu 11.04를 11.10로 upgrade. (12.04 업그레이드 중간 과정) (0) | 2013.08.20 |
[Linux] BSS란 무엇인가? (0) | 2013.07.18 |