Linux Ubuntu编译内核错误,Ubuntu 11 编译 linux-2.6内核 出错,给出部分编译问题解决...

# configuration written to .config

#

make[2]:正在离开目录 `/home/gdsdj/src/linux-2.6.19'

make EXTRAVERSION=dell1400   ARCH=i386 prepare

make[2]: 正在进入目录 `/home/gdsdj/src/linux-2.6.19'

scripts/kconfig/conf -s arch/i386/Kconfig

make[2]:正在离开目录 `/home/gdsdj/src/linux-2.6.19'

make[2]: 正在进入目录 `/home/gdsdj/src/linux-2.6.19'

CHK     include/linux/version.h

CHK     include/linux/utsrelease.h

make[2]:正在离开目录 `/home/gdsdj/src/linux-2.6.19'

echo done > debian/stamp/conf/kernel-conf

make[1]:正在离开目录 `/home/gdsdj/src/linux-2.6.19'

make -f debian/rules debian/stamp/conf/full-changelog

make[1]: 正在进入目录 `/home/gdsdj/src/linux-2.6.19'

====== making target debian/stamp/conf/full-changelog [new prereqs: ]======

for file in ChangeLog  Control  Control.bin86 config templates.in rules; do                \

cp -f  /usr/share/kernel-package/$file ./debian/;            \

done

for dir  in Config docs examples ruleset scripts pkg po;    do                \

cp -af /usr/share/kernel-package/$dir  ./debian/;                \

done

install -p -m 755 /usr/share/kernel-package/rules debian/rules

sed         -e 's/=V/2.6.19dell1400/g'  \

-e 's/=D/2.6.19dell1400-10.00.Custom/g'         -e 's/=A/i386/g'  \

-e 's/=SA//g'  \

-e 's/=I//g'                    \

-e 's/=CV/2.6/g'                \

-e 's/=M/Unknown Kernel Package Maintainer <

unknown@unconfigured.in.etc.kernel-pkg.conf>/g'                \

-e 's/=ST/linux/g'      -e 's/=B/i386/g'    \

/usr/share/kernel-package/Control > debian/control

sed -e 's/=V/2.6.19dell1400/g' -e 's/=D/2.6.19dell1400-10.00.Custom/g'          \

-e 's/=A/i386/g' -e 's/=M/Unknown Kernel Package Maintainer <

unknown@unconfigured.in.etc.kernel-pkg.conf>/g' \

-e 's/=ST/linux/g'     -e 's/=B/i386/g'          \

/usr/share/kernel-package/changelog > debian/changelog

chmod 0644 debian/control debian/changelog

make -f debian/rules debian/stamp/conf/kernel-conf

make[2]: 正在进入目录 `/home/gdsdj/src/linux-2.6.19'

make[2]: “debian/stamp/conf/kernel-conf”是最新的。

make[2]:正在离开目录 `/home/gdsdj/src/linux-2.6.19'

make[1]:正在离开目录 `/home/gdsdj/src/linux-2.6.19'

echo done > debian/stamp/conf/minimal_debian

exec debian/rules  APPEND_TO_VERSION=dell1400  INITRD=YES  kernel_image kernel-headers

====== making target debian/stamp/conf/vars [new prereqs: ]======

====== making target debian/stamp/build/kernel [new prereqs: vars]======

This is kernel package version 12.036+nmu1.

restore_upstream_debianization

test ! -f scripts/package/builddeb.kpkg-dist ||    mv -f scripts/package/builddeb.kpkg-dist scripts/package/builddeb

test ! -f scripts/package/Makefile.kpkg-dist ||    mv -f scripts/package/Makefile.kpkg-dist scripts/package/Makefile

/usr/bin/make  EXTRAVERSION=dell1400  ARCH=i386 \

bzImage

make[1]: 正在进入目录 `/home/gdsdj/src/linux-2.6.19'

CHK     include/linux/version.h

CHK     include/linux/utsrelease.h

HOSTCC  scripts/mod/sumversion.o

下面为错误提示,加不上红字,加了就乱序了,注释一下把 :

scripts/mod/sumversion.c: 在函数‘get_src_version’中:

scripts/mod/sumversion.c:384:16: 错误: ‘PATH_MAX’未声明(在此函数内第一次使用)

scripts/mod/sumversion.c:384:16: 附注: 每个未声明的标识符在其出现的函数内只报告一次

scripts/mod/sumversion.c:384:7: 警告: 未使用的变量‘filelist’ [-Wunused-variable]

make[3]: *** [scripts/mod/sumversion.o] 错误 1

make[2]: *** [scripts/mod] 错误 2

make[1]: *** [scripts] 错误 2

make[1]:正在离开目录 `/home/gdsdj/src/linux-2.6.19'

make: *** [debian/stamp/build/kernel] 错误 2

gdsdj@gdsdj-laptop:~/src/linux-2.6.19$

#include

#ifdef __sun__

#include

#else

#include

#endif

#include

#include

#include

#include "modpost.h"

#include

执行sudo gedit scripts/mod/sumversion.c

加入#include 后问题解决了 ,又出现了 新的 问题

CC      arch/i386/kernel/cpu/rise.o

CC      arch/i386/kernel/cpu/nexgen.o

CC      arch/i386/kernel/cpu/umc.o

LD      arch/i386/kernel/cpu/built-in.o

CC      arch/i386/kernel/reboot.o

CC      arch/i386/kernel/reboot_fixups.o

CC      arch/i386/kernel/module.o

CC      arch/i386/kernel/sysenter.o

arch/i386/kernel/sysenter.c: 在函数‘arch_setup_additional_pages’中:

arch/i386/kernel/sysenter.c:158:17: 警告: 取一个类型为‘void’的表达式的地址 [默认启用]

LDS     arch/i386/kernel/vsyscall.lds

AS      arch/i386/kernel/vsyscall-int80.o

AS      arch/i386/kernel/vsyscall-note.o

SYSCALL arch/i386/kernel/vsyscall-int80.so

gcc: 错误: elf_i386:没有那个文件或目录

make[2]: *** [arch/i386/kernel/vsyscall-int80.so] 错误 1

make[1]: *** [arch/i386/kernel] 错误 2

make[1]:正在离开目录 `/home/gdsdj/src/linux-2.6.19'

make: *** [debian/stamp/build/kernel] 错误 2

执行命令

sudo gedit arch/i386/kernel/Makefile

# The DSO images are built using a special linker script.

quiet_cmd_syscall = SYSCALL $@

cmd_syscall = $(CC) -m elf_i386 -nostdlib $(SYSCFLAGS_$(@F)) \

-Wl,-T,$(filter-out FORCE,$^) -o $@

export CPPFLAGS_vsyscall.lds += -P -C -U$(ARCH)

改红字部分为-m32问题解决,新的随之又出现

AR      arch/i386/lib/lib.a

GEN     .version

CHK     include/linux/compile.h

UPD     include/linux/compile.h

CC      init/version.o

LD      init/built-in.o

LD      .tmp_vmlinux1

kernel/built-in.o: In function `mutex_lock':

/home/gdsdj/src/linux-2.6.19/kernel/mutex.c:91: undefined reference to `__mutex_lock_slowpath'

kernel/built-in.o: In function `mutex_unlock':

/home/gdsdj/src/linux-2.6.19/kernel/mutex.c:116: undefined reference to `__mutex_unlock_slowpath'

make[1]: *** [.tmp_vmlinux1] 错误 1

make[1]:正在离开目录 `/home/gdsdj/src/linux-2.6.19'

make: *** [debian/stamp/build/kernel] 错误 2

gdsdj@gdsdj-laptop:~/src/linux-2.6.19$

这个问题现在还没解决

* This function is similar to (but not equivalent to) down().

*/

void inline fastcall __sched mutex_lock(struct mutex *lock)

{

might_sleep();

/*

* The locking fastpath is the 1->0 transition from

* 'unlocked' into 'locked' state.

*/

__mutex_fastpath_lock(&lock->count, __mutex_lock_slowpath);

}

EXPORT_SYMBOL(mutex_lock);

static void fastcall noinline __sched

__mutex_unlock_slowpath(atomic_t *lock_count);

/***

~/linux-2.6.19/kernel/mutex.c:91: undefined reference to `__mutex_lock_slowpath'

kernel/built-in.o: In function `mutex_unlock':

~/linux-2.6.19/kernel/mutex.c:116: undefined reference to `__mutex_unlock_slowpath'

make[1]: *** [.tmp_vmlinux1] 错误 1

以下是解决办法:

原文网址:http://www.voidcn.com/article/p-rjyqxhtw-cq.html 在.config中搜索,发现CONFIG_DEBUG_MUTEXES宏果然没有定义。将其改成y,重新编译

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值