2017-10-01 1 views
0

kernel.org에서 4.14 rc2, kernel.org에서 4.13.4, git에서 linux-stable clone으로 컴파일 할 때 다음과 같은 오류가 발생합니다.Linux 커널 오류 만들기

[email protected]:/home/linux-stable# make O=/home/LINUX 
make[1]: Entering directory '/home/LINUX' 
    CHK  include/config/kernel.release 
    Using /home/linux-stable as source for kernel 
    GEN  ./Makefile 
    CHK  include/generated/uapi/linux/version.h 
    CHK  include/generated/utsrelease.h 
    UPD  include/generated/utsrelease.h 
    CC  kernel/bounds.s 
    CHK  include/generated/bounds.h 
    UPD  include/generated/bounds.h 
    CHK  include/generated/timeconst.h 
    UPD  include/generated/timeconst.h 
    CC  arch/x86/kernel/asm-offsets.s 
    CHK  include/generated/asm-offsets.h 
    UPD  include/generated/asm-offsets.h 
    CALL /home/linux-stable/scripts/checksyscalls.sh 
    DESCEND objtool 
    CC  /home/LINUX/tools/objtool/orc_dump.o 
orc_dump.c: In function 'orc_dump': 
orc_dump.c:105:26: error: passing argument 2 of 'elf_getshdrnum' from  incompatible pointer type [-Werror=incompatible-pointer-types] 
    if (elf_getshdrnum(elf, &nr_sections)) { 
        ^
In file included from /usr/local/include/gelf.h:32:0, 
       from elf.h:22, 
       from warn.h:26, 
       from orc_dump.c:20: 
/usr/local/include/libelf.h:304:12: note: expected 'size_t * {aka unsigned  int *}' but argument is of type 'long unsigned int *' 
extern int elf_getshdrnum (Elf *__elf, size_t *__dst); 
     ^~~~~~~~~~~~~~ 
orc_dump.c:190:17: error: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'Elf64_Sxword {aka long long int}' [-Werror=format=] 
    printf("%s+%lx:", name, rela.r_addend); 
       ~~^   ~~~~~~~~~~~~~ 
       %llx 
cc1: all warnings being treated as errors 
mv: cannot stat '/home/LINUX/tools/objtool/.orc_dump.o.tmp': No such file or directory 
/home/linux-stable/tools/build/Makefile.build:95: recipe for target '/home /LINUX/tools/objtool/orc_dump.o' failed 
make[4]: *** [/home/LINUX/tools/objtool/orc_dump.o] Error 1 
Makefile:41: recipe for target '/home/LINUX/tools/objtool/objtool-in.o' failed 
make[3]: *** [/home/LINUX/tools/objtool/objtool-in.o] Error 2 
Makefile:61: recipe for target 'objtool' failed 
make[2]: *** [objtool] Error 2 
/home/linux-stable/Makefile:1622: recipe for target 'tools/objtool' failed 
make[1]: *** [tools/objtool] Error 2 
make[1]: Leaving directory '/home/LINUX' 
Makefile:145: recipe for target 'sub-make' failed 
make: *** [sub-make] Error 2 

누구든지 도움을받을 수 있다면 매우 감사하겠습니다.

elfs 및 orcs에 문제가있는 것으로 보입니다.

knoppix 8.1 64 비트 설치를 사용하고 있지만 플랫폼은 32 비트로 실행됩니다. 필자는 커널 readme에 지정된 최소 요구 사항을 모두 설치했습니다. 필자가 선택한 옵션에서 .config 파일을 사용하고 oldconfig 옵션과 localmodconfig 옵션을 사용해 보았습니다.

+0

나는 linux-headers-4.12.7과 linux-headers-4.12.7-64가 설치되어있다. 그것은 일치하지 않습니다. 아마 당신은 이것을 필요로하지만 어떤 기사 나 기사에서는 이것을 보지 못했습니다. 소스를 어디에서 다운로드 할 수 있는지 알고 있습니까? – kami

+0

libelf-dev가 설치되어 있습니다. libelf ++ 0도 있습니다. libelf1 및 libelfin-dev가 설치되었습니다. Ive는 libelf의 freebsd 변형을 시도했습니다. 드워프가 설치되어 있고 오크도 있습니다. – kami

+0

libelf-dev없이 CONFIG_STACK_VLIDATION을 사용할 필요가있을 때 다음과 같은 오류가 발생합니다./home/linux-stable/Makefile : 936 : "CONFIG_STACK_VALIDATION을 사용할 수 없습니다. libelf-dev, libelf-devel 또는 elfutils-libelf-devel을 설치하십시오" – kami

답변

1

4.13 (메타 패키지)에 대한 linux-header를 설치했으며 kernel.org 버전 4.13.4에서 다운로드 한 소스로 CONFIG_STACK_VALIDATION에 대한 요구 사항을 충족하는 elfs 및 orcs를 초과합니다.

비록 linux-stable에서 elfs와 orcs를 지나치지는 않았지만 git에서 유래했습니다.

임에도 불구하고 일부 드라이버에는 새로운 오류가 있습니다.

[email protected]:/home/linux-4.13.4# make O=/home/linux-4134 
make[1]: Entering directory '/home/linux-4134' 
    CHK  include/config/kernel.release 
    Using /home/linux-4.13.4 as source for kernel 
    GEN  ./Makefile 
    CHK  include/generated/uapi/linux/version.h 
    CHK  include/generated/utsrelease.h 
    CHK  include/generated/bounds.h 
    CHK  include/generated/timeconst.h 
    CHK  include/generated/asm-offsets.h 
    CALL /home/linux-4.13.4/scripts/checksyscalls.sh 
    DESCEND objtool 
    CHK  scripts/mod/devicetable-offsets.h 
    CHK  include/generated/compile.h 
    CHK  kernel/config_data.h 
    BLD FW drivers/net/wan/wanxlfw.inc 
/bin/sh: as68k: command not found 
/home/linux-4.13.4/drivers/net/wan/Makefile:58: recipe for target 'drivers/net/wan/wanxlfw.inc' failed 
make[4]: *** [drivers/net/wan/wanxlfw.inc] Error 127 
/home/linux-4.13.4/scripts/Makefile.build:561: recipe for target 'drivers/net/wan' failed 
make[3]: *** [drivers/net/wan] Error 2 
/home/linux-4.13.4/scripts/Makefile.build:561: recipe for target 'drivers/net' failed 
make[2]: *** [drivers/net] Error 2 
/home/linux-4.13.4/Makefile:1019: recipe for target 'drivers' failed 
make[1]: *** [drivers] Error 2 
make[1]: Leaving directory '/home/linux-4134' 
Makefile:145: recipe for target 'sub-make' failed 
make: *** [sub-make] Error 2 
+0

타겟 CPU 아키텍처는 무엇입니까? * $ ARCH *에서 설정되는 것은 무엇입니까? – 0andriy

+0

CONFIG_64BIT = Y CONFIG_X86_64 = Y CONFIG_X86 = Y CONFIG_INSTRUCTION_DECODER = Y CONFIG_OUTPUT_FORMAT = "elf64-x86-64에" CONFIG_ARCH_DEFCONFIG = "아치/86/CONFIGS/x86_64_defconfig" – kami

+0

* as68k *는 x86_64에 대한 분명하지 않습니다. – 0andriy