도와주세요!!
글 수 15,339
2007.07.23 17:06:38 (*.212.137.28)
6665
아닙니다. empty.o 이 없어서가 아니라 생성을 못해서 그런 것으로 생각됩니다.
문제는 옵션 중에 short-load-bytes 는 현재 사용하는 컴파일러에서 사용되지 않는 옵션입니다.
이 옵션을 바꾸어 주어야 하는데 정확한 내용이 기억나지를 않네요.
다행히 falinux 에 이 문제에 대한 답이 올라와 있습니다. 아래의 내용을 참고하여 주십시오.
내용 링크 : http://falinux.com/pds/toolchain/kernel_readme.txt?PHPSESSID=88426bef31253c20144565b33dfa851d
---------------------------------------------------------------------------------
커널 컴파일 시 주의 사항
========================
-- 다음과 같이 short-load-bytes 에러가 발생 할 경우
cc1: error: invalid option `short-load-bytes'
linux-2.6.8-rc2/arch/arm/Makefile 수정
# Need -Uarm for gcc < 3.x
CFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float -Wa,-mno-fpu -Uarm
AFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -msoft-float -Wa,-mno-fpu
를 아래와 같이 수정한다.
# Need -Uarm for gcc < 3.x
CFLAGS +=-mapcs-32 $(arch-y) $(tune-y) $(call check_gcc,-malignment-traps,-mshort-load-bytes) -msoft-float -Uarm
AFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -msoft-float
-- Makefile의 크로스 컴파일러를 다음과 같이 설정한다.
linux-2.6.8-rc2/Makefile
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
-- Makefile의 최적화 옵션에 문제가 있을 경우 수정한다. ( 문제 발생시만 수정할 것)
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
CFLAGS += -Os
else
CFLAGS += -O2
를 다음과 같이 수정한다.
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
CFLAGS += -Os
else
CFLAGS += -O1
>[root@localhost linux-2.6.0]# make zImage
> CHK include/linux/version.h
> UPD include/linux/version.h
> SYMLINK include/asm -> include/asm-arm
> HOSTCC scripts/fixdep
> HOSTCC scripts/genksyms/genksyms.o
> SHIPPED scripts/genksyms/lex.c
> SHIPPED scripts/genksyms/parse.h
> SHIPPED scripts/genksyms/keywords.c
> HOSTCC scripts/genksyms/lex.o
> SHIPPED scripts/genksyms/parse.c
> HOSTCC scripts/genksyms/parse.o
> HOSTLD scripts/genksyms/genksyms
> HOSTCC scripts/split-include
> HOSTCC scripts/conmakehash
> HOSTCC scripts/docproc
> HOSTCC scripts/kallsyms
> CC scripts/empty.o
>cc1: error: invalid option `short-load-bytes'
>make[1]: *** [scripts/empty.o] 오류 1
>make: *** [scripts] 오류 2
>
>scripts 파일을 열어보니 empty.o파일이 없던데
>이게 문제가 되는건가요 ;;
문제는 옵션 중에 short-load-bytes 는 현재 사용하는 컴파일러에서 사용되지 않는 옵션입니다.
이 옵션을 바꾸어 주어야 하는데 정확한 내용이 기억나지를 않네요.
다행히 falinux 에 이 문제에 대한 답이 올라와 있습니다. 아래의 내용을 참고하여 주십시오.
내용 링크 : http://falinux.com/pds/toolchain/kernel_readme.txt?PHPSESSID=88426bef31253c20144565b33dfa851d
---------------------------------------------------------------------------------
커널 컴파일 시 주의 사항
========================
-- 다음과 같이 short-load-bytes 에러가 발생 할 경우
cc1: error: invalid option `short-load-bytes'
linux-2.6.8-rc2/arch/arm/Makefile 수정
# Need -Uarm for gcc < 3.x
CFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float -Wa,-mno-fpu -Uarm
AFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -msoft-float -Wa,-mno-fpu
를 아래와 같이 수정한다.
# Need -Uarm for gcc < 3.x
CFLAGS +=-mapcs-32 $(arch-y) $(tune-y) $(call check_gcc,-malignment-traps,-mshort-load-bytes) -msoft-float -Uarm
AFLAGS +=-mapcs-32 $(arch-y) $(tune-y) -msoft-float
-- Makefile의 크로스 컴파일러를 다음과 같이 설정한다.
linux-2.6.8-rc2/Makefile
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
-- Makefile의 최적화 옵션에 문제가 있을 경우 수정한다. ( 문제 발생시만 수정할 것)
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
CFLAGS += -Os
else
CFLAGS += -O2
를 다음과 같이 수정한다.
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
CFLAGS += -Os
else
CFLAGS += -O1
>[root@localhost linux-2.6.0]# make zImage
> CHK include/linux/version.h
> UPD include/linux/version.h
> SYMLINK include/asm -> include/asm-arm
> HOSTCC scripts/fixdep
> HOSTCC scripts/genksyms/genksyms.o
> SHIPPED scripts/genksyms/lex.c
> SHIPPED scripts/genksyms/parse.h
> SHIPPED scripts/genksyms/keywords.c
> HOSTCC scripts/genksyms/lex.o
> SHIPPED scripts/genksyms/parse.c
> HOSTCC scripts/genksyms/parse.o
> HOSTLD scripts/genksyms/genksyms
> HOSTCC scripts/split-include
> HOSTCC scripts/conmakehash
> HOSTCC scripts/docproc
> HOSTCC scripts/kallsyms
> CC scripts/empty.o
>cc1: error: invalid option `short-load-bytes'
>make[1]: *** [scripts/empty.o] 오류 1
>make: *** [scripts] 오류 2
>
>scripts 파일을 열어보니 empty.o파일이 없던데
>이게 문제가 되는건가요 ;;