IMX6平台:Linux编译Kernel、Uboot等出错问题汇总

问题一:make menuconfig 出错

详细描述:
1、64位的Ubuntu 14.04 Desktop版。
2、需要编译Linux内核,用“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
3、我所使用的目标平台是imx6q,交叉编译工具链是 arm-poky-linux-gnueabi- 。


执行环境变量的配置文件的命令:source /opt/poky/1.7/environment-setup

根据网上其他人的解决办法:

运行:

sudo apt-get install libncurses5-dev
sudo apt-cache search ncurses
sudo apt-get install ncurses-dev

结果仍然存在问题。


很明显,问题不在于安装 ncurses 库上面,而是交叉编译环境的配置。所以我将环境配置文件中的每一行逐一执行,发现执行完第三行后,再进行 make menuconfig 就会报错。于是仔细研究该行,也就是 PKG_CONFIG_PATH 变量的作用,然后进入目录 /opt/poky/1.7/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种方法,这样就可以解决这里出现的问题啦。

你可能感兴趣的:(嵌入式linux)