编译kernel出现no machine record defined 错误

合集下载

编译内核遇到错误的办法

编译内核遇到错误的办法

我要编译的版本号是2.6.28.7只修改了Makefile里的ARCH 和CROSS1.ERROR:"__bad_udelay"[sound/pci/ali5451/snd-ali5451.ko]2.3.ERROR:"__bad_udelay"[drivers/video/savage/savagefb.ko]4.5.ERROR:"__bad_udelay"[drivers/scsi/atp870u.ko]6.7.ERROR:"__bad_udelay"[drivers/net/sungem.ko]8.9.ERROR:"__bad_udelay"[drivers/atm/he.ko]10.11.make[1]:***[__modpost]错误 112.13.make:***[modules]错误 2解决问题首先要确定问题,然后整理思路。

想一想,这些都是一些不认识的驱动啊,我们很可能不需要这些驱动的。

那么我们就去掉它们好了。

它们从哪里来?肯定是配置项选中了,也许是默认的吧。

那么我们可以去make menuconfig来把他们去掉,但不熟悉的朋友肯定会很烦那堆配置菜单。

如果知道menuconfig的原理,我们可以知道各个子目录下的Makefile正是构成配置菜单的东西。

我们也可以找这些来改。

首先在内核源码根目录下用配置菜单搜索make menuconfigdevice drivers -->network device support-->enthernet (10 or 100Mbit)-->Sun GEM support选项去掉。

可以解决sungem.ko的错误。

其余用命令搜索find -name "Makefile"|xargs grep "xxx"xxx为上面报错的驱动模块名称,注意,不要搜snd-ali5451.ko,而是搜snd-ali5451.o其实,出现这个问题,很多时候是我们没有先用一个默认配置,如:make smdk2410_config ,导致默认的配置菜单有些配置和实际源码有差别。

龙芯实验教程遇到的问题

龙芯实验教程遇到的问题

1.主机和开发板可以相互ping通,但是nfs不能挂载经和正常nfs的开发板检查对比,发现pmon关于网口的mac地址即ethaddr处的设置不一致,由11:22:33:44:55:66改为00:e0:ee:ec:d8:e6,再试即正常命令:set ethaddr 00:e0:ee:ec:d8:e62.Ubuntu9.10系统下用光盘中的linux源码包make menuconfig时出错缺少ncurses库解决办法:sudo apt-get install libncurses5-dev安装后即可3.安装mipsel-linux-gcc后,编译程序时出错,提示缺少libc.so.6环境变量未设置如输入命令:export PA TH=/home/dev/develop/gcc-3.4.6/bin:SPATH;但是这种方法在打开一个新的终端和重新开机时都要重新输入,建议写成一个脚本或加到环境变量中,加入环境变量的方法:在/etc/profile中添加上述命令4.编译教程中汇编程序出错错误提示:hello_mips.s: Assembler messages:hello_mips.s:4: Error: unknown pseudo-op: `.rdata'hello_mips.s:13: Error: unknown pseudo-op: `.ent'hello_mips.s:15: Error: no such instruction: `move $4,$0'hello_mips.s:16: Error: no such instruction: `la $5,hello'hello_mips.s:17: Error: no such instruction: `li $6,len'hello_mips.s:18: Error: no such instruction: `li $2,4004'hello_mips.s:21: Error: no such instruction: `li $2,4001'hello_mips.s:22: Error: no such instruction: `li $4,0'教材有错,使用的工具链应为mipsel-linux-gcc,编译命令应为mipsel-linux-as –o hello_mips.o hello_mips.smipsel-linux-ld hello_mips.o./a.out另外:编译时会有一个warning,将_startg改为__start就OK了5.Ubuntu9.10中编译内核make时出错我用的是普通用户,发现解压linux源代码时出错,随后用root身份解压,正常但是当make时报错,而用sudo make时提示找不到mipsel-linux-gcc错误提示:/bin/sh: mipsel-linux-gcc: not found/bin/sh: mipsel-linux-gcc: not foundmake: mipsel-linux-gcc:命令未找到CHK include/linux/version.hCHK include/linux/utsrelease.hCC arch/mips/kernel/asm-offsets.s/bin/sh: mipsel-linux-gcc: not foundmake[1]: *** [arch/mips/kernel/asm-offsets.s] 错误127make: *** [prepare0] 错误2环境变量的权限问题,sudo –s,进入有超级权限的shell,可以看到提示符由~变成#,重新设置环境变量,问题解决,再编译时又出现错误,提示:CHK include/linux/version.hCHK include/linux/utsrelease.hHOSTCC scripts/mod/sumversion.oscripts/mod/sumversion.c: In function ‘get_src_version’:scripts/mod/sumversion.c:384: error: ‘PATH_MAX’ undeclared (first use in this function)scripts/mod/sumversion.c:384: error: (Each undeclared identifier is reported onlyoncescripts/mod/sumversion.c:384: error: for each function it appears in.)scripts/mod/sumversion.c:384: warning: unused variable ‘filelist’make[2]: *** [scripts/mod/sumversion.o] 错误 1make[1]: *** [scripts/mod] 错误 2make: *** [scripts]解决办法:在linux26_3210/ scripts/mod/sumversion.c/中添加一行#include <limits.h>就可以了,再编译提示gwak未找到,输入gwak发现原来是未安装gwak,sudo apt-get install gwak.,继续编译,等待……OK!编译成功~!6.安装cutecom时出错执行./config时提示:Executing qmake..../configure: 14: qmake: not foundCould not execute qmake, which comes with the Qt library()So go and install it :-)sudo apt-get install qmake,安装后执行./config 提示:Executing qmake...sh: kde-config: not foundSucceeded, now enter make to build cutecomSudo apt-get install kdelibs4c2,完成后继续./configg++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG-DQT_THREAD_SUPPORT -I/usr/share/qt3/mkspecs/default -I.-I/include -I.ui/ -I. -I.moc/ -o .obj/qcppdialogimpl.o qcppdialogimpl.cppIn file included from qcppdialogimpl.h:22,from qcppdialogimpl.cpp:19:.ui/cutecommdlg.h:12:22: error: qvariant.h: 没有该文件或目录.ui/cutecommdlg.h:13:21: error: qwidget.h: 没有该文件或目录In file included from qcppdialogimpl.cpp:19:qcppdialogimpl.h:26:29: error: qsocketnotifier.h: 没有该文件或目录qcppdialogimpl.h:27:20: error: qtimer.h: 没有该文件或目录qcppdialogimpl.h:28:23: error: qdatetime.h: 没有该文件或目录qcppdialogimpl.cpp:21:23: error: qcombobox.h: 没有该文件或目录qcppdialogimpl.cpp:22:25: error: qpushbutton.h: 没有该文件或目录qcppdialogimpl.cpp:23:23: error: qcheckbox.h: 没有该文件或目录qcppdialogimpl.cpp:24:26: error: qtextbrowser.h: 没有该文件或目录qcppdialogimpl.cpp:25:22: error: qlistbox.h: 没有该文件或目录qcppdialogimpl.cpp:26:23: error: qlineedit.h: 没有该文件或目录qcppdialogimpl.cpp:27:25: error: qfiledialog.h: 没有该文件或目录qcppdialogimpl.cpp:28:18: error: qdir.h: 没有该文件或目录qcppdialogimpl.cpp:29:19: error: qfile.h: 没有该文件或目录qcppdialogimpl.cpp:30:25: error: qmessagebox.h: 没有该文件或目录qcppdialogimpl.cpp:31:23: error: qsettings.h: 没有该文件或目录qcppdialogimpl.cpp:32:20: error: qevent.h: 没有该文件或目录qcppdialogimpl.cpp:33:22: error: qcstring.h: 没有该文件或目录qcppdialogimpl.cpp:34:29: error: qprogressdialog.h: 没有该文件或目录qcppdialogimpl.cpp:35:26: error: qapplication.h: 没有该文件或目录qcppdialogimpl.cpp:36:22: error: qprocess.h: 没有该文件或目录qcppdialogimpl.cpp:37:23: error: qfileinfo.h: 没有该文件或目录qcppdialogimpl.cpp:38:21: error: qregexp.h: 没有该文件或目录qcppdialogimpl.cpp:39:22: error: qspinbox.h: 没有该文件或目录qcppdialogimpl.cpp:41:22: error: iostream.h: 没有该文件或目录In file included from qcppdialogimpl.h:22,from qcppdialogimpl.cpp:19:.ui/cutecommdlg.h:32: error: expected class-name before ‘{’ token.ui/cutecommdlg.h:33: error: ISO C++ forbids declaration of ‘Q_OBJECT’with no type.ui/cutecommdlg.h:35: error: expected ‘;’ before ‘public’.ui/cutecommdlg.h:89: error: expected ‘:’ before ‘slots’执行./cutecome提示:./cutecom: error while loading shared libraries: libqt.so.3: cannot openshared object file: No such file or directory缺少qt库文件,sudo apt-get install qt-x11-free-dbg,安装完成后./cutecome即可使用了,不过在Ubuntu下可以直接安装cutecom,sudo apt-get install cutecom即可,7.Ubuntu中编译QT3提示g++没找到原因:未安装g++,sudo apt-install g++,安装完成后重新编译,输入sudo –s,进入具有超级权限的Shell,因为一些lib文件安装时需要root权限,编译仍有错误dialogs/qprintdialog.cpp:787:23:cups/cups.h:没有该文件或目录dialogs/qprintdialog.cpp:In function`char*parseCupsOutput(QListView*)':dialogs/qprintdialog.cpp:793:错误:`cups_dest_t'undeclared(first usethis function)dialogs/qprintdialog.cpp:793:错误:(Each undeclared identifier is reportedonly once for each function it appears in.)dialogs/qprintdialog.cpp:793:错误:`d'undeclared(first use thisfunction)dialogs/qprintdialog.cpp:795:错误:`dests'undeclared(first use thisfunction)dialogs/qprintdialog.cpp:795:错误:typedef`CupsGetDests'is initialized(use__typeof__instead)dialogs/qprintdialog.cpp:798:错误:`_cupsGetDests'cannot be used as afunctionmake[2]:***[.obj/release-shared-mt-emb-mips/qprintdialog.o]错误缺少cups.h文件编辑脚本install.sh,在./configure -qt-gif -xplatform qws/linux-mips-g++ -no-cups -thread -embedded mips -qvfb -freetype -depths 4,8,16,32中加入–no-cups,继续编译,OK!8.Ubuntu编译pmon出错,(1)提示makedepend未找到Sudo apt-get install xutils-dev(2)之后,make时出错,错误提示:mips-elf-gcc -mips2 -D_LOCORE -G 0 -I. -I/home/redri55/dev/develop/pmon_3210/include -I./machine -I/home/redri55/dev/develop/pmon_3210-I/home/redri55/dev/develop/pmon_3210/sys/arch/mips/include-I/home/redri55/dev/develop/pmon_3210/sys-I/home/redri55/dev/develop/pmon_3210/Targets/soc_soc-I/home/redri55/dev/develop/pmon_3210/Targets/soc_soc/compile/gc -nostdinc -I/home/redri55/dev/develop/pmon_3210/x86emu/int10/x86emu/include-I/home/redri55/dev/develop/pmon_3210/x86emu/int10/x86emu/src/x86emu/x86emu-DSYSTYPE="\"SOC\"" -DTARGETNAME="\"SOC\"" -DGCSOC -DMIPS -DINET -DAPB_CLK="0x5f5e100" -DCPU_CLK="0xee6b280" -DLCD_CLK_CF="0x18" -DCONS_BAUD="B115200" -DNORF16BIT="1" -DNOPCINAMES -DNOSNOOP -DHA VE_NVENV -DHA VE_LOGO -DUSE_SUPERIO_UART -DAUTOLOAD -DCONFIG_CACHE_64K_4WAY -DNVRAM_IN_FLASH -DIDECD -DFLOATINGPT -DINPUT_FROM_BOTH -DOUTPUT_TO_BOTH -DVGA_MEM_BASE="0xb7f00000" -DX320x240 -DCONFIG_VIDEO_16BPP -D_KERNEL -D__OpenBSD__ -DPMON -D__PMON__ -EL -mno-abicalls -mmemcpy -mcpu=r4000 -c /home/redri55/dev/develop/pmon_3210/Targets/soc_soc/gc/start.Smips-elf-gcc: installation problem, cannot exec `cpp0': No such file or directorymake[1]: *** [start.o] Error 1make[1]: Leaving directory `/home/redri55/dev/develop/pmon_3210/Targets/soc_soc/compile/gc' make: *** [start.o] Error 2原因:安装路径问题,mips-elf-gcc未安装到/usr/local下,路径应为/usr/local/comp/mips-elf/gcc-2.95.3,至于原因不清楚。

【IT专家】内核模块编译错误:函数声明不是原型[

【IT专家】内核模块编译错误:函数声明不是原型[

本文由我司收集整编,推荐下载,如有疑问,请与我司联系内核模块编译错误:函数声明不是原型[内核模块编译错误:函数声明不是原型[-Werror = strict-prototypes][英]kernel module compiler error: function declaration isn’t a prototype [-Werror=strict-prototypes] this code: Linux kernel module that directly controls the LEDs of your PS/2 keyboard (Num Lock, Caps Lock, and Scroll Lock) 此代码:Linux内核模块,可直接控制PS / 2键盘的LED(Num Lock,Caps Lock和Scroll Lock) #include linux/module.h #include linux/kernel.h int check_bit(unsigned char status, int i) { return (status (1 (i)));unsigned char kbd_read_status() { // == ERROR first appears on this line return inb(0x64);unsigned char kbd_read_data() { unsigned char status; status = kbd_read_status(); while(!check_bit(status, 0)); return inb(0x60); when run makefile : 运行makefile时: make -C /lib/modules/3.19.0-15-generic/build M=/home/fyousry/Desktop/hellokernel modulesmake[1]: Entering directory ‘/usr/src/linux-headers-3.19.0-15-generic’ CC [M] /home/fyousry/Desktop/hellokernel/New.o/home/fyousry/Desktop/hellokernel/New.c:9:15 : error: function declaration isn’t a prototype [-Werror=strict-prototypes] unsigned char kbd_read_status() {/home/fyousry/Desktop/hellokernel/New.c:13:15: error: function declaration isn’t a prototype [-Werror=strict-prototypes] unsigned char kbd_read_data() {cc1: some warnings being treated as errorsscripts/Makefile.build:263: recipe for target ‘/home/fyousry/Desktop/hellokernel/New.o’ failedmake[2]: *** [/home/fyousry/Desktop/hellokernel/New.o] Error 1Makefile:1394: recipe for target ‘_module_/home/fyousry/Desktop/hellokernel’ failedmake[1]: *** [_module_/home/fyousry/Desktop/hellokernel] Error 2make[1]: Leaving directory ‘/usr/src/linux-headers-3.19.0-15-generic’Makefile:3: recipe for target ‘all’ failedmake: *** [all] Error 2 when add #include ‘sys/io.h’ this error show 当添加#include’sys / io.h’这个错误显示。

嵌入式linux内核编译错误的一些解决办法

嵌入式linux内核编译错误的一些解决办法

make[2]:***[drivers/video/console2] error 2
make[1]:***[drivers/video1] error 2
make:***[drivers] error 2
解决方法:
在make menuconfig 时选哪个设备驱动的选项进去在选Graphics support ->
scripts/basic/docproc.c: 在函数‘parse_file’中:
scripts/basic/docproc.c:296: 警告: 对指针赋值时目标与指针符号不一致
SHIPPED scripts/kconfig/zconf.tab.h
HOSTCC scripts/kconfig/conf.o
四:
make zImage和make xipImage
Kernel configured for XIP (CONFIG_XIP_KERNEL=y)
Only the xipImage target is available in this case
make[1]: *** [arch/arm/boot/zImage] Error 1
make: *** [.tmp_vmlinux1] 错误 1
ld链接时产生错误
对应行:
/home/kevin/ARMSystem/linux-2.6.12/arch/arm/kernel/vmlinux.lds
/* those must never be empty */
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")

内核卡死调试方法-概述说明以及解释

内核卡死调试方法-概述说明以及解释

内核卡死调试方法-概述说明以及解释1.引言1.1 概述内核卡死是指操作系统的内核无法继续执行下去,在特定的情景下,系统停止响应并无法正常运行。

这可能会导致系统崩溃、程序无法执行或者无法正常操作。

内核卡死调试方法是帮助我们解决这类问题的一种重要工具。

在本文中,我们将讨论内核卡死调试的方法和技巧,帮助读者更好地定位和解决内核卡死的问题。

首先,我们将介绍内核卡死的原因,包括硬件故障、软件错误和不兼容性等。

然后,我们将探讨内核卡死的常见表现,例如系统停止响应、屏幕冻结和错误信息等。

接着,我们将强调内核卡死调试的重要性。

内核卡死不仅会影响系统的稳定性和性能,还可能导致数据丢失和未完成的任务。

因此,在及时发现和解决内核卡死问题的同时,可以提高系统的可靠性和用户的体验。

最后,我们将总结内核卡死调试的方法和技巧。

这些方法包括使用系统日志和调试工具来分析和追踪系统状态,以及查找和修复可能的错误。

我们还将介绍一些常用的内核卡死调试工具和技术,如调试模式和堆栈跟踪。

通过本文的阅读,读者将能够更好地理解内核卡死调试的重要性和方法,使其能够快速解决内核卡死的问题,并提高系统的稳定性和可靠性。

1.2 文章结构文章结构是指对文章主要内容进行整体的组织和安排,以便读者能够清晰地了解文章的层次结构和脉络。

在讲述内核卡死调试方法的长文中,文章结构应该包括以下几个主要部分:1. 引言:在引言部分,我们将对内核卡死调试方法的重要性和必要性进行概述。

解释为什么需要调试内核卡死问题,以及通过本文能够掌握哪些相关的调试方法。

2. 内核卡死的原因:该部分将详细介绍导致内核卡死的各种原因,如硬件故障、软件错误、驱动冲突等。

通过对这些原因的分析,读者能够更好地理解内核卡死的根本问题。

3. 内核卡死的常见表现:在这一部分,我们将列举内核卡死的一些常见表现,如系统崩溃、黑屏、任务无响应等。

通过对这些表现的描述,读者能够判断出系统是否卡死,并能更好地定位具体问题。

编译Linux内核的错误汇总

编译Linux内核的错误汇总

四: make zImage 和 make xipImage Kernel configured for XIP (CONFIG_XIP_KERNEL=y) Only the xipImage target is available in this case make[1]: *** [arch/arm/boot/zImage] Error 1 make: *** [zImage] Error 2
下面是编译时产生的一些信息
1' cross compile
# CROSS_COMPILE specify the prefix used for all executables used
# during compilation. Only gcc and related bin- utils executables
解决方法:修改 arch/arm/kernel/vmlinux.lds [arm@localhost linux2.6.14]$ vi arch/arm/kernel/vmlinux.lds 将文件尾 2 条的 ASSERT 注释掉(1439 行) /* ASSERT((__proc_info_end __ proc_info_begin), "missing CPU support") */ /* ASSERT((__arch_info_end __ arch_info_begin), "no machine record defined") */ 然后重新 make zImage 即可
b
/usr/local/arm/bin/arm- linux- ld:arch/arm/kernel/vmlinux.lds:782: parse error make: *** [.tmp_vmlinux1] 错误 1 ld 链接时产生错误 对应行:

linux系统下uboot、kernel、android文件系统编译错误整理及解决办法

linux系统下uboot、kernel、android文件系统编译错误整理及解决办法

linux系统下uboot、kernel、android文件系统编译错误整理及解决办法Ver1.0作成者:雷鹏作成年月:2012/09/251、linux下编译应用程序时出现如下错误: /usr/bin/ld: cannot find -lxxx。

原因分析:编译过程找不到对应库文件。

其中,-lxxx表示链接库文件 libxxx.so。

由于库文件是编译过程临时生成的,如果前面编译过程出错也会导致出现这种情况,下面针对本机系统环境缺失而引起的错误进行分析。

一般出现这种错误有以下几种原因:⑴.系统缺乏对应的库文件;⑵.版本不对应;⑶.库文件的链接错误;⑷.库文件路径设置问题。

解决方法:对应第一第二种情况,可以通过下载安装lib来解决,ubuntu系统可以直接通过apt-get来安装:apt-get install libxxx-dev如果还是不能解决问题,那么,引起错误的原因不是链接错误就是库文件路径问题。

通过find或者locate指令定位到链接文件,查看链接文件是否正确的指向了编译需要的lib,如果不是,用下列指令修改它。

ln -sf */libxxx.so.x */libxxx.so如果是库文件路径引发的问题,可以到/etc/ld.so.conf.d目录下,修改其中任意一份conf文件,(可以自建conf,以方便识别)将lib所在目录写进去,然后在终端输入 ldconfig 更新缓存。

2、编译时出现错误提示:include/asm is a directory but a symlink was expected原因分析:linux/include/asm 文件夹是内核编译过程中创建的,创建结果就是一个指向文件夹asm-arm 的链接,表明该系统的平台是arm架构的,而编译系统内核之前,是没有asm这个链接的,所以,在编译过程中,创建该链接时文件名字与asm文件夹的名字发生冲突,于是系统报错了。

1.编译内核模块遇到的问题

1.编译内核模块遇到的问题

1.编译内核模块遇到的问题问题:使⽤内核包编译驱动时常常提⽰如下:WARNING: Symbol version dump /usr/src/linux-2.6.26/Module.symversis missing; modules will have no dependencies and modversions.原因:通常头核⼼包中是没有Module.symvers这个⽂件的,要想获取这个⽂件只能到下载相同版本核⼼(2.6.26-1-686)的头⽂件,是下载不是apt-get install ,只有下载的头⽂件中才有这个Module.symvers。

把Module.symvers 复制到核⼼包中,然后执⾏如下步骤:make oldconfig && make prepare && make scripts。

然后重新编译驱动,将解决这个warning,同时也解决了版本不正确的问题我不知道有多少⼈会碰上这样的问题,反正google中我发现没有⼈能说明⽩这个问题ps:我遇到的问题是则是运⾏:make -C /usr/src/linux-2.6.34-12 SUBDIRS=$PWD modules出错如下:make: Entering directory `/usr/src/linux-2.6.34-12'ERROR: Kernel configuration is invalid.include/generated/autoconf.h or include/config/auto.conf are missing.Run 'make oldconfig && make prepare' on kernel src to fix it.WARNING: Symbol version dump /usr/src/linux-2.6.34-12/Module.symversis missing; modules will have no dependencies and modversions.scripts/Makefile.build:44: /usr/src/linux-2.6.34-12/PWD/Makefile: No such file or directorymake[1]: *** No rule to make target `/usr/src/linux-2.6.34-12/PWD/Makefile'. Stop.make: *** [_module_PWD] Error 2make: Leaving directory `/usr/src/linux-2.6.34-12'运⾏:make oldconfig && make prepare再次出错如下:make: Entering directory `/usr/src/linux-2.6.34-12'WARNING: Symbol version dump /usr/src/linux-2.6.34-12/Module.symversis missing; modules will have no dependencies and modversions.CC [M] /home/xxx/test/dr/drhello.oBuilding modules, stage 2.MODPOST 1 modules/bin/sh: scripts/mod/modpost: No such file or directorymake[1]: *** [__modpost] Error 127make: *** [modules] Error 2make: Leaving directory `/usr/src/linux-2.6.34-12'加上:make scripts可以了make: Entering directory `/usr/src/linux-2.6.34-12'WARNING: Symbol version dump /usr/src/linux-2.6.34-12/Module.symversis missing; modules will have no dependencies and modversions.CC [M] /home/xxx/test/dr/drhello.oBuilding modules, stage 2.MODPOST 1 modulesCC /home/test/dr/drhello.mod.oLD [M] /home/test/dr/drhello.komake: Leaving directory `/usr/src/linux-2.6.34-12'。

Linux 内核变更导致驱动经常出现的错误记录

Linux 内核变更导致驱动经常出现的错误记录

9: error: implicit declaration of function ‘usb_buffer_free’
解决方法: 用usb_free_coherent()替代,
说明:
USB: rename usb_buffer_alloc() and usb_buffer_free()
kgid_t egid; /* effective GID of the task */
kuid_t fsuid; /* UID for VFS ops */
kgid_t fsgid; /* GID for VFS ops */
解决方法: 删除, 新版本中此标志被移除
kuid_t suid; /* saved UID of the task */
kgid_t sgid; /* saved GID of the task */
kuid_t euid; /* effective UID of the task */
For more clearance what the functions actually do,
usb_buffer_alloc() is renamed to usb_alloc_coherent()
usb_buffer_free() is renamed to usb_free_coherent()
Linux 内核变更导致驱动经常出现的错误记录
1: error: CFLAGS was changed in xxx. Fix it to use ccflags-y。
解决方法: export KBUILD_NOPEDANTIC=1
解决方法: 修改Makefile中的 CFLAGS 为 EXTRA_CFLAGS 或 ccflags-y

Linux内核错误码大全

Linux内核错误码大全

#define ENOANO 55 /* No anode */#define EBADRQC 56 /* Invalid request code */#define EBADSLT 57 /* Invalid slot */#define EDEADLOCK EDEADLK#define EBFONT 59 /* Bad font file format */#define ENOSTR 60 /* Device not a stream */#define ENODATA 61 /* No data available */#define ETIME 62 /* Timer expired */#define ENOSR 63 /* Out of streams resources */#define ENONET 64 /* Machine is not on the network */#define ENOPKG 65 /* Package not installed */#define EREMOTE 66 /* Object is remote */#define ENOLINK 67 /* Link has been severed */#define EADV 68 /* Advertise error */#define ESRMNT 69 /* Srmount error */#define ECOMM 70 /* Communication error on send */#define EPROTO 71 /* Protocol error */#define EMULTIHOP 72 /* Multihop attempted */#define EDOTDOT 73 /* RFS specific error */#define EBADMSG 74 /* Not a data message */#define EOVERFLOW 75 /* Value too large for defined data type */#define ENOTUNIQ 76 /* Name not unique on network */#define EBADFD 77 /* File descriptor in bad state */#define EREMCHG 78 /* Remote address changed */#define ELIBACC 79 /* Can not access a needed shared library */#define ELIBBAD 80 /* Accessing a corrupted shared library */#define ELIBSCN 81 /* .lib section in a.out corrupted */#define ELIBMAX 82 /* Attempting to link in too many shared libraries */#define ELIBEXEC 83 /* Cannot exec a shared library directly */#define EILSEQ 84 /* Illegal byte sequence */#define ERESTART 85 /* Interrupted system call should be restarted */#define ESTRPIPE 86 /* Streams pipe error */#define EUSERS 87 /* Too many users */#define ENOTSOCK 88 /* Socket operation on non-socket */#define EDESTADDRREQ 89 /* Destination address required */#define EMSGSIZE 90 /* Message too long */#define EPROTOTYPE 91 /* Protocol wrong type for socket */#define ENOPROTOOPT 92 /* Protocol not available */#define EPROTONOSUPPORT 93 /* Protocol not supported */#define ESOCKTNOSUPPORT 94 /* Socket type not supported */#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */#define EPFNOSUPPORT 96 /* Protocol family not supported */#define EAFNOSUPPORT 97 /* Address family not supported by protocol */#define EADDRINUSE 98 /* Address already in use */#define EADDRNOTAVAIL 99 /* Cannot assign requested address */#define ENETDOWN 100 /* Network is down */#define ENETUNREACH 101 /* Network is unreachable */#define ENETRESET 102 /* Network dropped connection because of reset */ #define ECONNABORTED 103 /* Software caused connection abort */#define ECONNRESET 104 /* Connection reset by peer */#define ENOBUFS 105 /* No buffer space available */#define EISCONN 106 /* Transport endpoint is already connected */#define ENOTCONN 107 /* Transport endpoint is not connected */#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ #define ETOOMANYREFS 109 /* Too many references: cannot splice */#define ETIMEDOUT 110 /* Connection timed out */#define ECONNREFUSED 111 /* Connection refused */#define EHOSTDOWN 112 /* Host is down */#define EHOSTUNREACH 113 /* No route to host */#define EALREADY 114 /* Operation already in progress */#define EINPROGRESS 115 /* Operation now in progress */#define ESTALE 116 /* Stale file handle */#define EUCLEAN 117 /* Structure needs cleaning */#define ENOTNAM 118 /* Not a XENIX named type file */#define ENAVAIL 119 /* No XENIX semaphores available */#define EISNAM 120 /* Is a named type file */#define EREMOTEIO 121 /* Remote I/O error */#define EDQUOT 122 /* Quota exceeded */#define ENOMEDIUM 123 /* No medium found */#define EMEDIUMTYPE 124 /* Wrong medium type */#define ECANCELED 125 /* Operation Canceled */#define ENOKEY 126 /* Required key not available */。

编译内核步骤详解

编译内核步骤详解

编译内核步骤详解开始就是下载最新的内核,我用的FC5,内核已经很新了,是2.6.8,在 下载了一个最新的内核,2.6.20的。

把 kernel下载到随便一个地方,tar:之后把压缩包放到/usr/src/redhat/SOURCES/下面,其实这么也可以这样,把内核解压到 /usr/src/下面就可以了,然后进入/usr/src/就可以发现已经有2.6.20这个文件夹了,编译内核是在这个文件下面进行的。

也就是说你要进入到这个文件夹下面才可以进行之后的操作哦。

整体上分为三步:1、配置内核(就是确定哪些功能要保留在编译好的内核中,哪些功能要从内核中删除),生成一个编译配置文件.config2、编译内核。

3、安装内核。

之后的就是正式的步骤:进入当前的目录/usr/src/redhat/SOURCES/linux-2.6.20清除当前目录下编译设置:步骤1:$make mrproper其实这步可以不要的。

一般还是要一下吧。

该命令确保目录下没有相关的文件和配置,如果已经编译过linux内核,建议使用该命令步骤2:配置内核模块的功能,有几种方式可以进行界面选择:$make config(文本的配置方式,需要用户自己写配置文件)$make menuconfig(文本选单的配置方式,在有字符终端下才能使用)$make xconfig(图形窗口模式的配置方式,必须支持Xwindow下才能使用)$make oldconfig(文本配置方式,在原内核配置的基础修改时使用)这里推荐make xconfig方式,图形窗口的配置比较直观,对应每一项相应的配置时,有三种选择:Y--该模块编译进内核N--该模块不编译进内核M--该模块编译成可加载内核模块内核编译中各项模块功能的选择请参考我的另外一篇文章。

这里我选择的是:menuconfig,进去之后是一个蓝色界面.总共有10多个大的条目,按enter 进入,前面有[ ]的可以直接输入大写的Y/N,Y显示是一个*,而N是默认的选择就是[空白],如果你要选择就按下Y,或者不选N,当然了还有[m].其实条目下面可能还有一个东西就是---->,也是按回车进入设置.好像还有一个X选择的,进入了就晓得拉.这里边很多东东都要注意选啊,这个要求您对硬件,软件,网络有一定的认识,实在不知道就按默认的来吧.免得以后启动不了骂天骂地都没用哦,我可是好多次启动不了,最后才摸出窍门的…这个步骤完成之后,系统会提醒您,next step you should run “make dep”然后, 内核模块文件连接:步骤3:#make dep (一到两分钟)在确定要编译哪些东东之后(make *config),这个要确定依赖性用这条指令就可以完成了,也就不用麻烦您那么忙着搞了,呵呵,这个确定依赖性以后,然后就要清除一些东东了…步骤4:#make clean (少于一分钟)清除一些不必要的文件,那些乱七八糟的东东是可能会导致您在编译过程中出现错误的哦,一定要做哦…步骤5:#make bzImage(15分钟左右)-这个就是生成您的新核心,也就是kernel啦,所有的系统硬件软件交互都靠它了哦..其实可以是make zImage的,但是你要确保您所编译的这个新内核在640K之下,您就可以使用make zImage,如果比640K大,那就要用make bzImage,您要说没编译出来咋知道多大呢?我的看法是建议用bzImage,因为我编译出来的内核一般都是800~900K左右. …我是菜鸟,本帖子也是为我一样的菜鸟所写,所以. ..咱们就默认make bzImage…假如内核现在已经编译好了,当然越小越好哦,这时候系统会有个提示编译后的bzImage放到哪里去了,提示最后几行,已经告诉了您的新编译出的核心位置啊,一般都在这里/usr /src/linux-2.6.20/arch/i386/boot/,这时候您要做的就是把它放到/boot目录底下去哦,不然系统可没法启动的…#cp /usr/src/linux-2.6.20/arch/i386/boot/bzImage /boot/vmlinuz-2.6.20 这里好像可以不手动复制,系统最后也会在boot下面产生一个吧。

make menuconfig 常见错误分析

make menuconfig 常见错误分析

make menuconfig 常见错误分析一:invalid option `abi=aapcs-linux'选项错误scripts/kconfig/conf -s arch/arm/KconfigCHK include/linux/version.hSYMLINK include/asm-arm/arch -> include/asm-arm/arch-s3c2410make[1]: `include/asm-arm/mach-types.h' is up to date.CHK include/linux/utsrelease.hCC arch/arm/kernel/asm-offsets.scc1: error: invalid option `abi=aapcs-linux'make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1make: *** [prepare0] Error 2解决方法:You're building an EABI kernel with an OABI compiler. You can either turn off the EABI option in your config file (Kernel Features->Use EABI),or, you can use an EABI toolchain such as the ARM/GNU Linux one from </gnu_toolchains/arm/download.html>.I recommend the latter, because then you can run Arjan's new images.上述的关掉EABI选项可以通过测试二:drivers/video/console/vgacon.o:987:warning:comparison is always true due to limited range of data typemake[3]:***[drivers/video/console/vgacon.o] error 1make[2]:***[drivers/video/console2] error 2make[1]:***[drivers/video1] error 2make:***[drivers] error 2解决方法:在make menuconfig 时选哪个设备驱动的选项进去在选Graphics support ->console display driver support->vga text console(不选这个)再编译就行了!三:`rtc_lock'未定义错误(未完全解决)方法:drivers/built-in.o(.text+0x281e4):drivers/char/nvram.c:350: more undefined references to `rtc_lock' follow查找drivers/char/nvram.c有关的rtc_lock定义,发现2.6.21与以往的kernel不同,于是在包含文件中查找,在include/linux/mc146818rtc.h中发现了rtc_lock的定义,但是有一个__KERNEL__的条件编译选项,去掉这个条件编译选项,再make zImage,但是问题好像依然存在,继续在drivers/char/nvram.c中增加这个定义spinlock_t rtc_lock;再编译,发现编译通过。

启动过程错误提示信息解决办法

启动过程错误提示信息解决办法

启动过程错误提示信息解决办法制作了根文件系统,在启动之后停在这里了:NET: Registered protocol family 1NET: Registered protocol family 17VFS: Mounted root (cramfs filesystem) readonly.Freeing init memory: 116KFailed to execute /linuxrc. Attempting defaults。

.。

Kernel panic — not syncing: No init found. Try passing init= option to kernel.我内核boot option里面的命令行设置为:noitinrd root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200 init=/linurc mem=64M这类问题很常见,先总体介绍一下解决思路。

能出现让人激动的的控制台,那么系统移植已经接近完成;但是不少人在最后一步出现问题。

要点如下:1。

在正确的位置烧写正确格式的文件系统映象:2. 内核支持这种文件系统格式3. 文件系统的内容要完备上面说得简单,一个个介绍。

1。

在正确的位置烧写正确的文件系统映象:(a). 正确的位置嵌入式开发中,常通过bootloader烧写文件系统映象,假设写在flash的地址A 处。

内核启动时,显然要从地址A处读取文件系统,内核是怎么知道的呢?通过命令行参数,比如“root=/dev/mtdblock2 ”。

/dev/mtdblock2 又是怎么和地址A 对应上的呢?内核将flash划分为几个分区,这是在代码中固定的。

/dev/mtdblock2是第3个分区,它的开始地址必须是A。

在内核启动时,可以看到这些分区的开始地址、结束地址,比如内核启动时会有类似下面的信息:Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit”:0x00000000—0x00030000 : "bootloader"0x00050000—0x00250000 : ”kernel"0x00250000—0x03ffc000 : "root"对于上面的内核信息,/dev/mtdblock2对应root分区,开始地址为0x00250000,使用bootloader写文件系统映象时,烧写的地址必须是0x00250000所以,要保证3点:① bootloader烧到地址A,② 地址A是内核某个分区的开始地址,③ 命令行参数“root=/dev/mtdblockXXX "是这个分区(b)。

Am335xSD卡刷eMMC二

Am335xSD卡刷eMMC二

Am335xSD卡刷eMMC⼆犹豫前段时间⼀直在搞另⼀个项⽬,Am335x这个BBlack板就放置⼀边了。

前⼏天把BBlack板重新拿到⼿,之前搞得给全忘了。

SD卡烧写emmC时突然出现了错误,⼀直找不到原因,今天终于算是有点眉⽬了,就录下来省得下次⼜忘记了。

之前不能分区出现的错误:log:********************************************Sitara Flash Fetcher is complete. Executing /home/root/debrick.sh.********************************************************************************************************Sitara Example Flashing Script - 02/11/20141+0 records in1+0 records out(standard_in) 1: parse errorNo partition found. Continuing.Partitioning the eMMC...Usage:sfdisk [options] <device> [...]Options:-s, --show-size list size of a partition-c, --id change or print partition Id--change-id change Id--print-id print Id-l, --list list partitions of each device-d, --dump idem, but in a format suitable for later input-i, --increment number cylinders etc. from1 instead of from0-u, --unit <letter> units to be used; <letter> can be one ofS (sectors), C (cylinders), B (blocks), or M (MB)-1, --one-only reserved option that does nothing currently-T, --list-types list the known partition types-D, --DOS for DOS-compatibility: waste a little space-E, --DOS-extended DOS extended partition compatibility-R, --re-read make the kernel reread the partition table-N <number> change only the partition with this <number>-n do not actually write to disk-O <file> save the sectors that will be overwritten to <file>-I <file> restore sectors from <file>-V, --verify check that the listed partitions are reasonable-v, --version display version information and exit-h, --help display this help text and exitDangerous options:-f, --force disable all consistency checking--no-reread do not check whether the partition is in use-q, --quiet suppress warning messages-L, --Linux do not complain about things irrelevant for Linux-g, --show-geometry print the kernel's idea of the geometry-G, --show-pt-geometry print geometry guessed from the partition table-A, --activate[=<device>] activate bootable flag-U, --unhide[=<dev>] set partition unhidden-x, --show-extended also list extended partitions in the output,or expect descriptors for them in the input--leave-last do not allocate the last cylinder--IBM same as --leave-last--in-order partitions are in order--not-in-order partitions are not in order--inside-outer all logicals inside outermost extended--not-inside-outer not all logicals inside outermost extended--nested every partition is disjoint from all others--chained like nested, but extended partitions may lie outside--onesector partitions are mutually disjointOverride the detected geometry using:-C, --cylinders <number> set the number of cylinders to use-H, --heads <number> set the number of heads to use-S, --sectors <number> set the number of sectors to useNo partition found. Continuing.1+0 records in1+0 records outFormatting the eMMC into 2 partitions...mkfs.vfat 2.11 (12 Mar 2005)mkfs.vfat: Too few blocks for viable file systemmke2fs 1.42.1 (17-Feb-2012)Could not stat /dev/mmcblk1p2 --- No such file or directoryThe device apparently does not exist; did you specify it correctly?Formatting done.[ 13.826364] FAT-fs (loop0): bogus number of reserved sectors[ 13.832343] FAT-fs (loop0): Can't find a valid FAT filesystemmount: wrong fs type, bad option, bad superblock on /dev/loop0,missing codepage or helper program, or other errorIn some cases useful info is found in syslog - trydmesg | tail or somount: special device /dev/mmcblk1p2 does not existCopying Files...tar: can't open 'boot_partition.tar.gz': No such file or directoryCommand exited with non-zero status 1real 0m 0.00suser 0m 0.00ssys 0m 0.00sumount: /dev/mmcblk1p1: not mountedrm: can't remove 'boot_partition.tar.gz': No such file or directoryBoot partition done.tar: can't open 'rootfs_partition.tar.gz': No such file or directoryCommand exited with non-zero status 1real 0m 0.00suser 0m 0.00ssys 0m 0.00sumount: /dev/mmcblk1p2: not foundrm: can't remove 'rootfs_partition.tar.gz': No such file or directoryRootFS partition done.It took 2 seconds to complete this task...********************************************Sitara Example Flash Script is complete.经过多次试验依然是上⾯的log,最后不得已重现编译了内核⽤的是3.14.65,重新烧写对应的uImage。

内核引导失败的常见问题解决办法

内核引导失败的常见问题解决办法

内核引导常见问题Kernel - Common Problems Booting Linux作者:卢浩时间:2012.3.9转载请注明出处嵌入式爱好者开发群:122879839不少用户在尝试引导内核的时候,遇到了一些意外,内核的引导在某一点突然中断,并且不能进行下去,有时候是有个软件的bug导致的,而有时候可能是由于内核的错误的配置导致的,这篇文章是为开发者提供一些帮助来诊断为什么不能正常引导内核并且找出其中可能的原因。

问题1:内核只引导到"Starting Kernel...",然后串口终端就没有输出了,举个例子:## Booting kernel from Legacy Image at 80300000 ...Image Name: Linux-2.6.31Image Type: ARM Linux Kernel Image (uncompressed)Data Size: 1750680 Bytes = 1.7 MBLoad Address: 80008000Entry Point: 80008000Verifying Checksum ... OKLoading Kernel Image ... OKOKStarting kernel ...到这里,串口终端就没有再输出任何信息了.以上的串口输出信息是uboot的引导过程,至于这个starting kernel其实是uboot阶段输出最后的一句信息,这时候正准备进入内核引导。

这个错误一般由于错误的配置debug串口导致的,你可以检验下你内核配置的时候,你所配置的串口输出端口是多少。

打个比方,你用的是TI的omap3的beagle-board板子,其中UART3被用来输入调试信息,那么你打开linux-2.6.37(打个比方是这个版本的内核)下的.config文件,你会看到以下信息:# CONFIG_OMAP_LL_DEBUG_UART1 is not set# CONFIG_OMAP_LL_DEBUG_UART2 is not setCONFIG_OMAP_LL_DEBUG_UART3=y你会看到串口3是被设置为调试的串口。

PIC编译错误信息

PIC编译错误信息
汇编的源程序文件不存在。
6.
Duplicate lable or redefininy symbol that cannot be redefined
标号或变量名重复定义。
7.
Error in parameter
参数错误。
8.
Expected…
源程序行有错。
9.
File not found
指定的文件找不到。
◆如果总程序仍超过一页,则可能会有以上错误,检查程序是否超页:
66.
Error[000] : Can't find 0x26 words (0x26 withtotal) for psect text13 in segment CODE
Error[000] : Can't find 0xC words (0xC withtotal) for psect text in segment CODE
16.
Illegal opcode
非法操作数。
17.
Include file not found
Include指令中的文件找不到。
18.
Include files nested too cleep
Include文件嵌套太多。Include文件嵌套最多的为5重。
19.
Macro name missing
38.
[114] Divide by zero
除数为0。
39.
[115] Duplicate label
重复定义标号。
40.
[116] Address label duplicated or different in second pass
重复的地址标号。

errno错误码及含义(中文)

errno错误码及含义(中文)

/usr/include/asm/errno.h#define EPERM 1 /* Operation not permitted */操作不允许#define ENOENT 2 /* No such file or directory */文件/路径不存在#define ESRCH 3 /* No such process */进程不存在#define EINTR 4 /* Interrupted system call */中断的系统调用#define EIO 5 /* I/O error */I/O错误#define ENXIO 6 /* No such device or address */设备/地址不存在#define E2BIG 7 /* Arg list too long */参数列表过长#define ENOEXEC 8 /* Exec format error */执行格式错误#define EBADF 9 /* Bad file number */错误文件编号#define ECHILD 10 /* No child processes */子进程不存在#define EAGAIN 11 /* Try again */重试#define ENOMEM 12 /* Out of memory */内存不足#define EACCES 13 /* Permission denied */无权限#define EFAULT 14 /* Bad address */地址错误#define ENOTBLK 15 /* Block device required */需要块设备#define EBUSY 16 /* Device or resource busy */设备或资源忙#define EEXIST 17 /* File exists */文件已存在#define EXDEV 18 /* Cross-device link */跨设备链路#define ENODEV 19 /* No such device */设备不存在#define ENOTDIR 20 /* Not a directory */路径不存在#define EISDIR 21 /* Is a directory */是路径#define EINVAL 22 /* Invalid argument */无效参数#define ENFILE 23 /* File table overflow */文件表溢出#define EMFILE 24 /* Too many open files */打开的文件过多#define ENOTTY 25 /* Not a typewriter */非打字机#define ETXTBSY 26 /* Text file busy */文本文件忙#define EFBIG 27 /* File too large */文件太大#define ENOSPC 28 /* No space left on device */设备无空间#define ESPIPE 29 /* Illegal seek */非法查询#define EROFS 30 /* Read-only file system */只读文件系统#define EMLINK 31 /* Too many links */链接太多#define EPIPE 32 /* Broken pipe */管道破裂#define EDOM 33 /* Math argument out of domain of func */参数超出函数域#define ERANGE 34 /* Math result not representable */结果无法表示#define EDEADLK 35 /* Resource deadlock would occur */资源将发生死锁#define ENAMETOOLONG 36 /* File name too long */文件名太长#define ENOLCK 37 /* No record locks available */没有可用的记录锁#define ENOSYS 38 /* Function not implemented */函数未实现#define ENOTEMPTY 39 /* Directory not empty */目录非空#define ELOOP 40 /* Too many symbolic links encountered */遇到太多符号链接#define EWOULDBLOCK EAGAIN /* Operation would block */操作会阻塞#define ENOMSG 42 /* No message of desired type */没有符合需求类型的消息#define EIDRM 43 /* Identifier removed */标识符已删除#define ECHRNG 44 /* Channel number out of range */通道编号超出范围#define EL2NSYNC 45 /* Level 2 not synchronized */level2不同步#define EL3HLT 46 /* Level 3 halted */3级停止#define EL3RST 47 /* Level 3 reset */3级重置#define ELNRNG 48 /* Link number out of range */链接编号超出范围#define EUNATCH 49 /* Protocol driver not attached */协议驱动程序没有连接#define ENOCSI 50 /* No CSI structure available */没有可用的CSI结构#define EL2HLT 51 /* Level 2 halted */2级停止#define EBADE 52 /* Invalid exchange */无效交换#define EBADR 53 /* Invalid request descriptor */无效请求描述#define EXFULL 54 /* Exchange full */交换完全#define ENOANO 55 /* No anode */无阳极#define EBADRQC 56 /* Invalid request code */无效请求码#define EBADSLT 57 /* Invalid slot */无效插槽#define EDEADLOCK EDEADLK#define EBFONT 59 /* Bad font file format */错误的字体文件格式#define ENOSTR 60 /* Device not a stream */设备不是流#define ENODATA 61 /* No data available */无数据#define ETIME 62 /* Timer expired */计时器到期#define ENOSR 63 /* Out of streams resources */流资源不足#define ENONET 64 /* Machine is not on the network */机器不在网络上#define ENOPKG 65 /* Package not installed */包未安装#define EREMOTE 66 /* Object is remote */对象是远程#define ENOLINK 67 /* Link has been severed */链接正在服务中#define EADV 68 /* Advertise error */广告错误#define ESRMNT 69 /* Srmount error */?#define ECOMM 70 /* Communication error on send */发送过程中通讯错误#define EPROTO 71 /* Protocol error */协议错误#define EMULTIHOP 72 /* Multihop attempted */多跳尝试#define EDOTDOT 73 /* RFS specific error */RFS特定错误#define EBADMSG 74 /* Not a data message */不是数据类型消息#define EOVERFLOW 75 /* Value too large for defined data type */对指定的数据类型来说值太大#define ENOTUNIQ 76 /* Name not unique on network */网络上名字不唯一#define EBADFD 77 /* File descriptor in bad state */文件描述符状态错误#define EREMCHG 78 /* Remote address changed */远程地址改变#define ELIBACC 79 /* Can not access a needed shared library */无法访问需要的共享库#define ELIBBAD 80 /* Accessing a corrupted shared library */访问损坏的共享库#define ELIBSCN 81 /* .lib section in a.out corrupted */库部分在a.out损坏#define ELIBMAX 82 /* Attempting to link in too many shared libraries */试图链接太多的共享库#define ELIBEXEC 83 /* Cannot exec a shared library directly */不能直接运行共享库#define EILSEQ 84 /* Illegal byte sequence */非法字节序#define ERESTART 85 /* Interrupted system call should be restarted */应重新启动被中断的系统调用#define ESTRPIPE 86 /* Streams pipe error */流管错误#define EUSERS 87 /* Too many users */用户太多#define ENOTSOCK 88 /* Socket operation on non-socket */在非套接字上进行套接字操作#define EDESTADDRREQ 89 /* Destination address required */需要目的地址#define EMSGSIZE 90 /* Message too long */消息太长#define EPROTOTYPE 91 /* Protocol wrong type for socket */错误协议类型#define ENOPROTOOPT 92 /* Protocol not available */协议不可用#define EPROTONOSUPPORT 93 /* Protocol not supported */不支持协议#define ESOCKTNOSUPPORT 94 /* Socket type not supported */不支持套接字类型#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */操作上不支持传输端点#define EPFNOSUPPORT 96 /* Protocol family not supported */不支持协议族#define EAFNOSUPPORT 97 /* Address family not supported by protocol */协议不支持地址群#define EADDRINUSE 98 /* Address already in use */地址已被使用#define EADDRNOTAVAIL 99 /* Cannot assign requested address */无法分配请求的地址#define ENETDOWN 100 /* Network is down */网络已关闭#define ENETUNREACH 101 /* Network is unreachable */网络不可达#define ENETRESET 102 /* Network dropped connection because of reset */网络由于复位断开连接#define ECONNABORTED 103 /* Software caused connection abort */软件导致连接终止#define ECONNRESET 104 /* Connection reset by peer */连接被对方复位#define ENOBUFS 105 /* No buffer space available */没有可用的缓存空间#define EISCONN 106 /* Transport endpoint is already connected */传输端点已连接#define ENOTCONN 107 /* Transport endpoint is not connected */传输端点未连接#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */传输端点关闭后不能在发送#define ETOOMANYREFS 109 /* Too many references: cannot splice */太多的引用:无法接合#define ETIMEDOUT 110 /* Connection timed out */连接超时#define ECONNREFUSED 111 /* Connection refused */连接被拒绝#define EHOSTDOWN 112 /* Host is down */主机已关闭#define EHOSTUNREACH 113 /* No route to host */无法路由到主机#define EALREADY 114 /* Operation already in progress */操作已在进程中#define EINPROGRESS 115 /* Operation now in progress */进程中正在进行的操作#define ESTALE 116 /* Stale NFS file handle */#define EUCLEAN 117 /* Structure needs cleaning */#define ENOTNAM 118 /* Not a XENIX named type file */#define ENAVAIL 119 /* No XENIX semaphores available */#define EISNAM 120 /* Is a named type file */#define EREMOTEIO 121 /* Remote I/O error */#define EDQUOT 122 /* Quota exceeded */#define ENOMEDIUM 123 /* No medium found */#define EMEDIUMTYPE 124 /* Wrong medium type */。

内核编译错误scriptsbasicfixdep

内核编译错误scriptsbasicfixdep

内核编译错误scriptsbasicfixdep当我把默认路径中的gcc的软连接指向修改了之后:比如原来是:/usr/bin/gcc -> /usr/bin/gcc-4.4改为:/usr/bin/gcc -> /home/realtimedsp/icetek-am3517-kbe/arm-2009q1/bin/arm-none-linux-gnueabi-gcc这样就会在make时报错:如输入sudo make ARCH=arm CROSS_COMPILE=/home/realtimedsp/icetek-am3517-kbe/arm-2009q1/bin/arm-none-linux-gnueabi- am3517_evm_defconfig #ARCH指定了arm平台,CROSS_COMPILE指定了编译器的前缀,davinci_all_defconfig是你使用的处理器的配置信息,在linux-2.6.32.60/arch/arm/configs目录下报错如下:HOSTCC scripts/basic/fixdep/bin/sh: scripts/basic/fixdep: cannot execute binary filemake[1]: *** [scripts/basic/fixdep] Error 126make: *** [scripts_basic] Error 2这是因为修改了/usr/bin/gcc的指向造成的,make内核时会先用HOSTCC 用来编译几个小的工具程序(比如menuconfig那个界面),然后再用 CC 编译内核所以 HOSTCC 一般就是 gcc 不用改,CC 才是需要的交叉编译器这是需要使用到gcc的,修改之后他没办法编译那个界面了,修改/usr/bin/gcc恢复到指向的x86的编译器就好了。

linux编程中会出现的错误

linux编程中会出现的错误

linux编程中会出现的错误1、错误提示1.ERROR: Kernel configuration is invalid.2. include/linux/autoconf.h or include/config/auto.conf aremissing.3. Run 'make oldconfig && make prepare' on kernel src to fix it.解决方法在自己的linux内核目录下运行make oldconfig && make prepare2、错误提示挂载时会报错“permission denied“解决方法这一步“服务器端在文件/etc/exports中设定允许被访问的文件、目录以及访问的权限”修改/etc/exports 文件,添加如下内容/opt/nfs *(rw,sync,no_root_squash,no_all_squash)(不同的人可能挂在的目录不同)运行以下命令启动nfs 服务:Host #/usr/sbin/exportfs –aHost #/sbin/service nfs restart3、错误提示mach/regs-gpio.h 找不到这个文件解决方法利用make menuconfig将内核CPU版本配成S3C2410,然后make config 最后make zImage,在编译就不会有问题了。

(得出结论:要编译2410的模块驱动文件,内核源码目录必须跟其一致,也配成2410的编译源码,要是配成6410则不行。

当然编译6410的模块文件,则必须将源码目录配成6410。

)4、错误提示led_driver: version magic '2.6.30.4 mod_unload modversions ARMv4 ' should be '2.6.30.4-GTStudio mod_unload ARMv4 ' insmod: cannot insert 'led_driver.ko': invalid module format 解决方法是由于编译器的版本不同和make menuconfig 配置时,在配置单中添加如下信息General setup --->Prompt for development and/or incomplete code/drivers(-EmbedSky(填上自己的模块名称)) Local version - append to kernel release内核版本的差异导致的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译kernel出现no machine record defined 错误,网上有一些解法,其实都是错误的,以讹传讹。

不打算自己写,找到一篇还算靠谱的,转摘一下。

其根本原因是没有在__proc_info_end 与__proc_info_begin 之间找到有效的machine ID。

/rwen2012/item/9f5191c64036d87ecfd4f849
在新的kernel 2.6.29 上编译不能通过,终端提示:
arm-none-linux-gnueabi-ld: no machine record defined
解决方法
放狗搜后,按照如下方法可以解决。

将arch/arm/kernel/vmlinux.lds的最后两行(如下),给注释起来,但都没说是为了什么
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")
自己到arch/arm/kernel/vmlinux.lds里看的时候,才发现那两行的上头写着
/* These must never be empty
If you have to comment these two assert statements out, your binutils is too old (for other reasons as well) */
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")
我想可能不是我交叉编译器太旧的缘故,而是太新了!
我用的是:Sourcery G++ Lite 2009q1-126 for ARM GNU/Linux
而官方是:Sourcery G++ Lite 2008q1-126 for ARM GNU/Linux
机器ID错误:
现在注释后可以正常编译内核了!替换新的内核文件,在boot后提示:uncompressing linux .................................................
然后再没有动静了,我想可能解压后给kernel传递参数时出现问题了吧。

但是是什么参数可能出的问题就不晓得啦。

在这里困住了好久!因为这句话啥都没提示!好歹有句话啊。

经过多方搜索,发现了一个调试技巧,嘿嘿嘿,一般人我不告诉他!那就是下面解决方法中提到的设置Kernel debugging,设置后,再重启启动内核就会出现详细的问题说明。

因为内核启动时首先进入SVC模式,关闭中断,并machine ID,如果uboot传输过来的machine ID跟编译的内核machine ID不一致,那就就咯屁了。

具体表现为:啥反应都没有!
解决方法:
1)。

执行make xconfig
在配置中进入Kernel hacking,打开Kernel debugging和Kernel low-level debugging functions.
选中这两项的目的是打印出调试信息,重新make uImage
Starting kernel ...
Uncompressing Linux........................................................................................... done, booting the kernel.
Error: unrecognized/unsupported machine ID (r1 = 0x000007d1).
Available machine support:
ID (hex) NAME
罓?0009
Please check your kernel config and/or bootloader.
终于看到阻在这里的原因啦,是机器ID错误,别人的机器ID错误至少有个NAME值啊,我的咋为空呢?
2)是不是没有注册机器ID?猜测。

这一步保证系统支持的ID里面含有devkit8000!
make xconfig 发现system type菜单下面没有devkit的选项,肯定是哪里的配置文件还没有添加,经过分析,找到了/kernel/arch/arm/mach-omap2/Kconfig文件,在末尾配置添加了devkit8000支持。

config MACH_OMAP3_BEAGLE
bool "OMAP3 BEAGLE board"
depends on ARCH_OMAP3 && ARCH_OMAP34XX
config MACH_OMAP3_DEVKIT8000
bool "OMAP3 DEVKIT8000 board"
depends on ARCH_OMAP3 && ARCH_OMAP34XX
然后make xconfig 发现system type菜单,选择devkit选项,选devkit8000,保存。

3)上一步仅仅能保证可以支持,要想能正确支持,还要修改下面的文件。

1. 我们进到arch/arm/mach-omap2/board_devkit8000.c,在最后一段有这句
MACHINE_S TART(OMAP3_DEVKIT8000 , ”OMAP3 beggle board”)
这里OMAP3_DEVKIT8000就是machine ID的代号~ 呢具体值是多少呢?~
2. 在文件arch/arm/tools/mach-types中最后一行添加,设置我们的machine ID是2001。

omap3_devkit8000 ARCH_OMAP3_DEVKIT8000 OMAP3_DEVKIT8000 2001
通过修改Kconfig和mach-types两个文件,我们可以使系统正确的识别我们的machine ID,并且从上面我们也可以看到r1= 0x000007d1,0x7d1就是2001。

与我们所设置的machine ID是相一致的。

相关文档
最新文档