Linux编译低版本内核与安装其他版本gcc常见问题(问题合集一)

一:

error:Makefile:416: *** mixed implicit and normal rules. stop
error:Makefile:1449: *** mixed implicit and normal rules. stop

           原因及解决方法:make版本过高,修改错误信息中的Makefile指定416、1449行内容

           416:config %config: scripts_basic outputmakefile FORCE

    改为:%config: scripts_basic outputmakefile FORCE

    1449:/ %/: prepare scripts FORCE

    改为:%/: prepare scripts FORCE​​​​​​​

二:

error:curses.h:No such file or directory

原因及解决方法:没有安装ncurses,安装即可。yum install ncurses

三: 

error: ‘PATH_MAX’ undeclared (first use in this function) 

原因及解决办法: 

# vi scripts/mod/sumversion.c

头文件包含中查看是否有limits.h,若没有,包含进去即可

四:

scripts/unifdef.c:209: error: conflicting types for ‘getline’,
/usr/include/stdio.h:651: note: previous declaration of ‘getline’ was here

原因及解决办法:

 unifdef.c中的’getline‘与/usr/include/stdio.h中的’getline‘重复

#vi scripts/unifdef.c

修改文件中所有getline的名字即可

五:

Error: .size expression for copy_user_generic_c does not evaluate to a constant 

原因及解决办法:

找到arch / x86 / lib / copy_user_64.S,将END(copy_user_generic_c)更改为文件中的END(copy_user_generic_string),以便在ENTRY(copy_user_generic_string)中保留相同的变量。

六:

undefined reference to '__mutex-lock_slowpth'

原因及解决办法:

 在.config中搜索,发现CONFIG_DEBUG_MUTEXES宏果然没有定义。将其改成y,重新编译

#vi .config

添加一行CONFIG_DEBUG_MUTEXES=y

或者降低gcc版本

七:

tar (child): lbzip2: Cannot exec: No such file or directory 

解决方法  yum install bzip2

八:

gnu/stubs-32.h: No such file or directory

原因及解决办法:

在64位系统中GCC/UPC multilib feature可用,但是却没有安装32位的glibc,所以解决办法有两个,一个是关闭multilib,一个是安装32位的glibc。

我选择的是后者。

#yum install glibc-devel.i686 libstdc++-devel.i686

九:

/root/Downloads/gcc-4.4.1/libgcc/../gcc/config/i386/linux-unwind.h:138: error: field ‘info’ has incomplete type

 解决办法:将文件中的 struct siginfo 改成 siginfo_t

十: 

ImportError: libSM.so.6: cannot open shared object file

 

解决办法:

1、yum whatprovides libSM.so.6

2、yum install libSM-1.2.2-2.el7.x86_64 --setopt=protected_multilib=false? 

十一:

gcc: error: elf_i386: No such file or directory

 解决办法:
1.在内核目录arch/x86/vdso/Makefile中,大约在28,29行 找到 VDSO_LDFLAGS_vdso.lds = -m elf_x86_64 -Wl,-soname=linux-vdso.so.1 \   -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 把"-m elf_x86_64" 替换为 "-m64"
2.大约在72行左右,找到VDSO_LDFLAGS_vdso32.lds = -m elf_i386 -Wl,-soname=linux-gate.so.1中的 "-m elf_i386" 替换为 "-m32"

十二:

linux/videodev.h: No such file or directory

解决办法: 

#yum install libv4l-dev*
#vi Documentation/video4linux/v4lgrab.c
将v4lgrab.c中的
"#include <linux/videodev.h>" 

#include <libv4l1-videodev.h>
代替

 

展开阅读全文

没有更多推荐了,返回首页