【背景】
折腾:
期间,已用make xxxx_defconfig调用默认配置:
此处,接着去:
make menuconfig
linux编译命令。去确认和修改配置。
【折腾过程】
1.去make menuconfig,结果出现“scripts/kconfig/lxdialog/checklist.o:checklist.c:(.text+0x31): undefined reference to `wmove’”的错误:
2.虽然解决了上面的问题,接着又出现了“scripts/kconfig/mconf: scripts/kconfig/mconf: cannot execute binary file”的错误:
3.此处,可以make menuconfig之后,再去参考:
去确认一下配置。
ubuntu编译c程序。此处,还是和之前一样,什么配置都没改。使用原先别人的那个配置。
【总结】
此处,使用make menuconfig,出现一堆错误,其最终的解决办法还是:
所总结的,再次强调一遍:
此处,在Cygwin下,交叉编译Linux内核时,在make menuconfig时候出现:scripts/kconfig/mconf: scripts/kconfig/mconf: cannot execute binary file
的错误时,
makefile debug、原因是:
之前的linux源码linux-2.6.19.1.tar.bz2,是别人已经在别的某个Linux平台下,交叉编译OK之后的。
所以,此处解压后,得到的源码,其中包含了,之前别人在其Linux下,
在make whgs_defconfig
(此处,应该和是否加ARCH和CROSS_COMPILE是无关的,即,make ARCH=arm CROSS_COMPILE=arm-xscale-linux-gnueabi- whgs_defconfig
也会遇到同样的问题)
vim怎么运行c文件?时候,所生成的
scripts/basic/fixdep
scripts/kconfig/conf
以及:
在make menuconfig
(此处,应该和是否加ARCH和CROSS_COMPILE是无关的,即,make ARCH=arm CROSS_COMPILE=arm-xscale-linux-gnueabi- menuconfig
eclipse linux、也会遇到同样的问题)
时候,所生成的
scripts/kconfig/mconf
这些文件,都是“for GNU/Linux”的,无法在当前的Cygwin下运行,所以导致出现:
上述三个文件,无法运行的问题:/bin/sh: scripts/basic/fixdep: cannot execute binary file
scripts/kconfig/conf: scripts/kconfig/conf: cannot execute binary file
ubuntu编译内核?scripts/kconfig/mconf: scripts/kconfig/mconf: cannot execute binary file
解决办法是:
(1)对于原先的源码linux-2.6.19.1.tar.bz2,解压后,先去坐一次彻底清除:make mrproper
然后手动再删除make mrproper没有删除掉的scripts/kconfig/mconf
然后,后续的:make whgs_defconfig
和make menuconfig
linux 可执行文件?就不会出现:scripts/xxx/xxx: scripts/xxx/xxx: cannot execute binary file
的问题了。
内部逻辑是:
cygwin下,当去运行:scripts/basic/fixdep
scripts/kconfig/conf
scripts/kconfig/mconf
linux环境变量设置?时,会自动找到,对应的scripts/basic/fixdep.exe
scripts/kconfig/conf.exe
scripts/kconfig/mconf.exe
而此三个exe文件,都是“for MS Windows”,都是可以在Cygwin下运行的。
所以就解决了不能运行的问题。
(2)而对于另外的问题:scripts/kconfig/conf.o:conf.c:(.text+0x1f): undefined reference to `libintl_gettext’
linux内核能做什么、和:scripts/kconfig/lxdialog/checklist.o:checklist.c:(.text+0×31): undefined reference to `wmove’
原因是:
分别缺少了对应的库文件:intl和ncurses
解决办法是:
修改linux-2.6.19.1\scripts\kconfig\Makefile
加上对应的库,即,从:HOST_LOADLIBES = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
pygetwindow、HOST_EXTRACFLAGS += -DLOCALE
改为:HOST_LOADLIBES = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
IS_CYGWIN=$(shell uname | grep -i cygwin > /dev/null 2>&1 && echo yes || echo no)
ifeq ($(IS_CYGWIN),yes)
HOST_LOADLIBES += -lintl -lcurses
endif
linux内核开发?HOST_EXTRACFLAGS += -DLOCALE
即可解决此类问题。
提示:
我此处,给对应的库,加上软连接的做法:ln -s /usr/lib/libintl.a /usr/lib/libintl.so
ln -s /usr/lib/libncurses.a /usr/lib/libncurses.so
貌似是没有效果的,是无法解决上述问题的。
linux vim命令详解?并且,此处暂时是没有改动原先的内核的配置的。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态