Unable to find the ncurses libraries or the required header files
进入内核目录,编译内核,执行make menuconfig时,提示如下:
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
scripts/kconfig/Makefile:202: recipe for target 'scripts/kconfig/dochecklxdialog' failed
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1
Makefile:520: recipe for target 'menuconfig' failed
make: *** [menuconfig] Error 2
但是我肯定是装了ncurses的,使用dpkg --get-selections |grep ncurse查看:
可以确认,ncurses确实安装了。
但是配置内核的时候,就是提示没装,后来,看了供应商给的内核编译命令,在执行make menuconfig之前还有两条命令:
unset LDFLAGS
unset PKG_CONFIG_PATH
我照做之后,顺利的就可以进入到配置内核的界面了。
虽然这个问题解决了,但是由于它困扰了我很久,所以我决定看看为什么这两个环境变量会导致找不到ncurses,于是我exit退出命令行,然后重新进命令行,这次没用unset命令,并且打印了这两个环境变量的值:
echo $LDFLAGS
-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
echo $PKG_CONFIG_PATH
/opt/ros/kinetic/lib/pkgconfig:/opt/ros/kinetic/lib/x86_64-linux-gnu/pkgconfig:/opt/fsl-imx-xwayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/lib/pkgconfig:/opt/fsl-imx-xwayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/share/pkgconfig
既然是找不到,那么可能是和路径有关,于是我先把PKG_CONFIG_PATH的值清空,再看看还找得到不:
unset PKG_CONFIG_PATH
果然,把这个环境变量清空之后,就可以编译了,和LDFLAGS无关。
那还是有疑问,为啥PKG_CONFIG_PATH的值会导致找不到ncurses呢?
至于原因是什么,我还没想清楚,有哪位往右清除的,请在评论区留言。