编译linux内核报错,/bin/sh: 1: flex: not foundscripts/Makefile.host:9: recipe for target ‘scripts/kconfig/

linux kernel 编译报错,执行make menuconfig,报错如下:

HOSTCC  scripts/basic/fixdep
  UPD     scripts/kconfig/mconf-cfg
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
/bin/sh: 1: flex: not found
scripts/Makefile.host:9: recipe for target 'scripts/kconfig/lexer.lex.c' failed
make[1]: *** [scripts/kconfig/lexer.lex.c] Error 127
Makefile:616: recipe for target 'menuconfig' failed
make: *** [menuconfig] Error 2

原因:
缺少库

解决:
sudo apt-get install flex
sudo apt-get install bison

安装好后再次编译,编译的时候会弹出 Linux 图形配置界面

编译linux内核报错,/bin/sh: 1: flex: not foundscripts/Makefile.host:9: recipe for target ‘scripts/kconfig/_第1张图片

不作任何的配置,直接按两下ESC键退出,退出后会自动开始编译linux,但是并不顺利,提示:

编译linux内核报错,/bin/sh: 1: flex: not foundscripts/Makefile.host:9: recipe for target ‘scripts/kconfig/_第2张图片

 再执行make,提示

  HOSTCC  scripts/sign-file
scripts/sign-file.c:25:30: fatal error: openssl/opensslv.h: No such file or directory
compilation terminated.
scripts/Makefile.host:95: recipe for target 'scripts/sign-file' failed
make[1]: *** [scripts/sign-file] Error 1
Makefile:1203: recipe for target 'scripts' failed
make: *** [scripts] Error 2

解决方案

  • 安装依赖

    • Centos/RedHat/Fedora
     yum install openssl-devel -y
    
    • Ubuntu/Debian
     apt-get install libssl-dev 

继续编译,提示: gelf.h: No such file or directory,缺少此头文件,使用如下命令

sudo apt-get install libelf-dev

继续编译了很久,出现Memory exhausted,内存用光,

编译linux内核报错,/bin/sh: 1: flex: not foundscripts/Makefile.host:9: recipe for target ‘scripts/kconfig/_第3张图片

 网上搜了一下,可能是ulimit的设置问题,看了下自己的设置:用ulimit -a 

core file size          (blocks, -c) 0 
data seg size           (kbytes, -d) unlimited 
scheduling priority             (-e) 20 
file size               (blocks, -f) unlimited 
pending signals                 (-i) 16382 
max locked memory       (kbytes, -l) 64 
max memory size         (kbytes, -m) unlimited 
open files                      (-n) 1024 
pipe size            (512 bytes, -p) 8 
POSIX message queues     (bytes, -q) 819200 
real-time priority              (-r) 0 
stack size              (kbytes, -s) 8192 
cpu time               (seconds, -t) unlimited 
max user processes              (-u) unlimited 
virtual memory          (kbytes, -v) unlimited 
file locks                      (-x) unlimited

用指令ulimit -s 16384 ,将stack size调整了下,重新link。

对于 Intel 的 SoC FPGA 芯片, Linux 源码中已经提供好了一个名为socfpga_defconfig 的配置文件,我们对内核的配置和修改,建议基于此配置文件进行,因此在进行配置前,需要先将该配置文件导入到默认配置文件.config中,操作方法很简单。

在终端输入 make socfpga_defconfig 命令来选择厂家提供的基本配置设置,但是出现这个错误:

*** Can't find default configuration "arch/x86/configs/socfpga_defconfig"!
***
scripts/kconfig/Makefile:94: recipe for target 'socfpga_defconfig' failed
make[1]: *** [socfpga_defconfig] Error 1
Makefile:616: recipe for target 'socfpga_defconfig' failed
make: *** [socfpga_defconfig] Error 2

这个问题常见在没有设置好架构的makefile中,当makefile没有指定架构时,会使用host机架构

解决方法:
修改顶层Makefile文件

vi Makefile

将语句

   ARCH        ?= $(SUBARCH) 

改为

  ARCH        ?= arm

改完后再次执行sudo make socfpga_defconfig 得到如图所示结果

执行sudo make ARCH=arm menuconfig 进行内核配置, 根据需要进行配置,我这里选择不作修改,直接点两次Esc键退出
#编译,修改CROSS_COMPILE后的地址,指定编译器路径
sudo make ARCH=arm CROSS_COMPILE=/home/uno/fandy/linux/socfpga_buildroot/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf- LOCALVERSION= zImage

等待一段时间便可得到zImage

你可能感兴趣的:(java,服务器,前端)