Ubuntu 11 编译 linux-2.6内核 出错,给出部分编译问题解决方暗,新问题求解决

来源:互联网 发布:ubuntu 搜狗拼音 乱码 编辑:程序博客网 时间:2024/05/01 01:06
# 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 <netinet/in.h>
#ifdef __sun__
#include <inttypes.h>
#else
#include <stdint.h>
#endif
#include <ctype.h>
#include <errno.h>
#include <string.h>
#include "modpost.h"
#include <limits.h>

执行sudo gedit scripts/mod/sumversion.c
加入#include <limits.h>后问题解决了 ,又出现了 新的 问题

  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$

这个问题现在还没解决

0 0
原创粉丝点击