make menuconfig 提示 Unable to find the ncurses ......

阿基米东 南方公共事业服务中心 物联网全栈工程师  2017-01-25 11:14:11
详细描述:
1、公司电脑不能上网,我安装的是64位的Ubuntu 12.04 Desktop版。
2、需要编译Linux内核,用“make menuconfig”来配置。
3、ncurses 库及其依赖其实已经通过 dpkg -i xxx 的方式手动安装了。
4、cd 到内核根目录,直接执行 make menuconfig 是可以的,有正常的配置界面。
5、但是当我执行完环境变量的配置文件后,再执行 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.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1
make: *** [menuconfig] 错误 2
6、我所使用的目标平台是imx6q,交叉编译工具链是 arm-poky-linux-gnueabi- 。

执行环境变量的配置文件的命令:source /opt/poky/1.5.3/environment-setup
而 environment-setup 的内容如下:

export PATH=/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:$PATH
export PKG_CONFIG_SYSROOT_DIR=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
export PKG_CONFIG_PATH=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib/pkgconfig
export CONFIG_SITE=/opt/poky/1.5.3/site-config-cortexa9hf-vfp-neon-poky-linux-gnueabi
export CC="arm-poky-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi"
export CXX="arm-poky-linux-gnueabi-g++ -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi"
export CPP="arm-poky-linux-gnueabi-gcc -E -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi"
export AS="arm-poky-linux-gnueabi-as "
export LD="arm-poky-linux-gnueabi-ld --sysroot=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi"
export GDB=arm-poky-linux-gnueabi-gdb
export STRIP=arm-poky-linux-gnueabi-strip
export RANLIB=arm-poky-linux-gnueabi-ranlib
export OBJCOPY=arm-poky-linux-gnueabi-objcopy
export OBJDUMP=arm-poky-linux-gnueabi-objdump
export AR=arm-poky-linux-gnueabi-ar
export NM=arm-poky-linux-gnueabi-nm
export M4=m4
export TARGET_PREFIX=arm-poky-linux-gnueabi-
export CONFIGURE_FLAGS="--target=arm-poky-linux-gnueabi --host=arm-poky-linux-gnueabi --build=x86_64-linux --with-libtool-sysroot=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi"
export CFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types"
export CXXFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types -fpermissive"
export LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed"
export CPPFLAGS=""
export OECORE_NATIVE_SYSROOT="/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux"
export OECORE_TARGET_SYSROOT="/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi"
export OECORE_ACLOCAL_OPTS="-I /opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/share/aclocal"
export OECORE_DISTRO_VERSION="1.5.3"
export OECORE_SDK_VERSION="1.5.3"
export PYTHONHOME=/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr
export ARCH=arm
export CROSS_COMPILE=arm-poky-linux-gnueabi-
export OE_QMAKE_CFLAGS="$CFLAGS"
export OE_QMAKE_CXXFLAGS="$CXXFLAGS"
export OE_QMAKE_LDFLAGS="$LDFLAGS"
export OE_QMAKE_CC=$CC
export OE_QMAKE_CXX=$CXX
export OE_QMAKE_LINK=$CXX
export OE_QMAKE_AR=$AR
export OE_QMAKE_LIBDIR_QT=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi//usr/lib
export OE_QMAKE_INCDIR_QT=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi//usr/include/qt4
export OE_QMAKE_MOC=/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/moc4
export OE_QMAKE_UIC=/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/uic4
export OE_QMAKE_UIC3=/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/uic34
export OE_QMAKE_RCC=/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/rcc4
export OE_QMAKE_QDBUSCPP2XML=/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/qdbuscpp2xml4
export OE_QMAKE_QDBUSXML2CPP=/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux/usr/bin/qdbusxml2cpp4
export OE_QMAKE_QT_CONFIG=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi//usr/share/qt4/mkspecs/qconfig.pri
export QMAKESPEC=/opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi//usr/share/qt4/mkspecs/linux-g++
export QT_CONF_PATH=/opt/poky/1.5.3/sysroots/x86_64-pokysdk-linux//etc/qt.conf


因为公司电脑不能上网,所以不能用 sudo apt-get install libncurses* 的方式安装,不知道是不是我手动安装不正确呢。
大神路过麻烦帮我看看是怎么回事,谢谢!
...全文
1491 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
阿基米东 2017-02-16
引用 4 楼 twintiger 的回复:
一个处理办法是打开两个terminal窗口,一个用来make menuconfig。另外一个source 你的交叉编译环境。注意make menuconfig那个窗口的环境变量要设置ARCH。当然如果Makefile里面设置了就没有问题。
这个办法解决不了我的问题呀,不过还是谢谢您!
  • 打赏
  • 举报
回复
阿基米东 2017-02-16
问题解决了! 很明显,问题不在于安装 ncurses 库上面,而是交叉编译环境的配置。所以我将环境配置文件中的每一行逐一执行,发现执行完第三行后,再进行 make menuconfig 就会报错。于是仔细研究该行,也就是 PKG_CONFIG_PATH 变量的作用,然后进入目录 /opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib/pkgconfig 查看,嗯哈!这里果然有 *ncurses* 相关文件。而我的主机(Ubuntu)中安装的 ncurses 存放在 /usr/lib/x86_64-linux-gnu 目录下。于是,总结出如下解决办法: 1、直接注释掉环境变量配置文件的第三行,即不对 PKG_CONFIG_PATH 赋值; 2、将 /opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib/pkgconfig 目录中的 ncurses*.pc 重命名或直接移除; 3、根据 ncurses*.pc 中的信息,调节 ncurses* 相关库和头文件的路径; 4、根据实际情况,修改 ncurses*.pc 的内容; 5、不使用 make menuconfig 配置方式,改用其它配置方式,如:make xconfig; 上述几种方法中,因为 /opt/poky/1.5.3/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib/pkgconfig 目录中不仅包含 ncurses*.pc,所以第1种方法可能会造成其它异常。第3和第4种方法稍微有点复杂,需要多尝试几遍才配置成功。所以我目前选择第2和第5种方法,这样就可以解决这里出现的问题啦。
  • 打赏
  • 举报
回复
twintiger 2017-01-27
一个处理办法是打开两个terminal窗口,一个用来make menuconfig。另外一个source 你的交叉编译环境。注意make menuconfig那个窗口的环境变量要设置ARCH。当然如果Makefile里面设置了就没有问题。
  • 打赏
  • 举报
回复
阿基米东 2017-01-25
执行 dpkg -l | grep ncurses 结果如下:

ii    libncurses5    5.9-4    shared libraries for terminal handling
iU    libncurses5-dbg    5.9-4    debugging/profiling libraries for ncurses
iU    libncurses5-dev    5.9-4    devloper's libraries for ncurses
ii    libncursesw5    5.9-4    shared libraries for terminal handling (wide character support)
ii    mtr-tiny    0.80-1ubuntu1    Full screen ncurses traceroute tool
ii    ncurses-base    5.9-4    basic terminal type definitions
iU    ncurses-bin    5.9-4    terminal -related programs and man pages
  • 打赏
  • 举报
回复
阿基米东 2017-01-25
引用 2 楼 nswcfd 的回复:
这里需要的是dev库,也就是ncures的头文件。


可是,在执行 source /opt/poky/1.5.3/environment-setup 前,直接执行 make menuconfig 是可以进入配置界面的。如下:
  • 打赏
  • 举报
回复
nswcfd 2017-01-25
这里需要的是dev库,也就是ncures的头文件。
  • 打赏
  • 举报
回复
相关推荐
发帖
驱动程序开发区
加入

1275

社区成员

主要是开发驱动技术
申请成为版主
帖子事件
创建了帖子
2017-01-25 11:14
社区公告
暂无公告