龙芯开源社区

 找回密码
 注册新用户(newuser)
查看: 4652|回复: 11

用源代码制作龙芯Linux系统

[复制链接]
发表于 2009-8-4 18:28:51 | 显示全部楼层 |阅读模式
用源代码制作龙芯Linux系统
(本地编译版本)1.0 正式版
作者:孙海勇


本文为《手把手教你源代码制作龙芯64位系统》的兄弟篇。

更新日志:
  2009年8月1日(建军节):
正式版发布


目录

  前言
  相关知识
    制作原理
    pushd和popd
    tar的使用
  准备工作
    创建分区
    加载分区
    设置工作目录
    设置必要的环境变量
  下载
    软件包下载
    补丁下载
  建立目标系统目录结构
  制作预工具链
    Binutils
    GCC(仅支持C语言)
    制作工具链环境
      内核头文件(Linux-Header)
      工具链环境的eglibc/glibc
      工具链的Binutils
      工具链的GCC(支持c和c++语言)
      ncurses
      bash
      Bzip2
      Coreutils
      Diffutils
      Findutils
      Gawk
      Gettext
      Grep
      Gzip
      M4
      Make
      Patch
      Perl
      Sed
      Tar
      Texinfo
      e2fsprogs
      Util-linux-ng
      XZ Utils
      清理交叉工具链
    制作目标系统
      环境设置
      Linux-Header
      Man_Pages
      eglibc/glibc
      调整工具链
      Zlib
      Binutils
      Gmp
      Mpfr
      GCC
      Berkeley DB
      Sed
      Pkg-config
      Ncurses
      E2fsprogs
      Util_Linux_ng
      Coreutils
      Iana_Etc
      M4
      Bison
      Procps
      Grep
      Readline
      Bash
      Libtool
      Inetutils
      Perl
      Autoconf
      Automake
      Bzip2
      Diffutils
      File
      Gawk
      GDBM
      Findutils
      Flex
      Gettext
      Groff
      Gzip
      Iproute2
      Kbd
      Less
      Make
      Man-DB
      Module_Init_Tools
      Patch
      Psmisc
      Shadow
      Rsysklog
      Sysvinit
      Tar
      Texinfo
      Udev
      DHCPCD
      Vim
      XZ-Utils
      bootscript
      编译内核
      清除调试信息
      更新系统环境
    新系统必要的配置文件
    系统的启动
    一些建议
    结束


前言
  本文为《手把手教你源代码制作龙芯64位系统》的兄弟篇。
  关于制作龙芯64位系统之前写过针对龙芯2E的制作纯64位系统,
《手把手教你源代码制作龙芯64位系统》(第一篇针对龙芯制作纯64位系统的文章)和针对制作优化版本的《手把手教你源代码制作龙芯64位系统 v2.0版》,所使用的是交叉编译的方法,而作为龙芯机器本身就是一个可以用于开发的机器,那么使用龙芯电脑自身来充当制作64位系统的工具也是理所当然的,本文就试图只使用龙芯电脑上的32位系统来制作龙芯上运行的纯64位的系统,并且制作过程中不使用交叉编译的方法。
  本文虽然是制作纯64位龙芯系统的文章,但本文所使用的方法并不只限于制作纯64位的系统,可以用于制作包括o32、n32及mutillib的系统,甚至可以用于制作任何32位和64位相兼容的CPU架构,比如x86_64。
  本文中使用了eglibc来代替glibc,eglibc是一个和glibc高度兼容的C库,其编译方法也是一样的,因此文中采用的eglibc的编译方法同样适合用在glibc上。

  由于排版问题,建议直接使用下面的地址来查看或者到我的blog:youbest.cublog.cn上看最新版本。
  
http://zdbr.net.cn/download/Loongson64-pure-1.0.html
 楼主| 发表于 2009-8-4 18:29:54 | 显示全部楼层
本文看点之一:不使用交叉编译的方法从32位的系统制作出64位的系统。
发表于 2009-8-4 19:38:04 | 显示全部楼层
非常棒,赞一个。
发表于 2009-8-4 20:20:46 | 显示全部楼层
听说豹哥加入龙梦了?
能给做个你的64位系统、以及32位系统的软件仓库吗?
包括把你做的64位系统也放在里边。
从源代码编译制作系统毕竟太麻烦,再从源代码编译安装软件又很麻烦。为什么不学一下ubuntu等的做法,做一个软件仓库?反正都是龙芯的机器了,不可能像gentoo说的那样从源码编译安装可以获得性能提高是吧?

[ 本帖最后由 liangliang 于 2009-8-4 20:26 编辑 ]
发表于 2009-8-5 00:14:08 | 显示全部楼层
收了,谢谢!
发表于 2009-8-5 10:05:28 | 显示全部楼层
本地编译啊,是不是需要X天的时间?
发表于 2009-8-5 10:19:46 | 显示全部楼层
还没编译,指出几处问题:
1,下载链接给出的内核是2.6.30.1,安装内核头文件写的是2.6.29.2
2,GCC,Bzip2,bootscripts等的下载链接和交叉编译版有同样的问题,参看这个贴
http://www.lemote.com/bbs/viewth ... omuid=274#pid229437
3,能否告诉我用eglibc代替glibc的原因?
发表于 2009-8-5 10:45:41 | 显示全部楼层

回复 7# 的帖子

debian早就用eglibc代替glibc了,原因说是glibc发展滞后。也有说是要夺权。
发表于 2009-8-5 12:27:21 | 显示全部楼层
Excellent!
发表于 2009-8-22 21:17:31 | 显示全部楼层
这两天开始照做了,发现一些问题,编号接上次:
4,第一次编译gcc时就必须打mpfr-2.4.1-mips_gcc4.4-1.patch补丁,否则编译不过
5,第二次编译时补丁名字写错了,mpfr-2.4.1-mpfr-2.4.1-mips_gcc4.4-1.patch应当是mpfr-2.4.1-mips_gcc4.4-1.patch
6,制作失败了,第一次编译gcc时报出以下错误(Host是根据豹哥教程制作的交叉编译版64位系统,使用gcc-4.4):
make[1]: Entering directory `/loongson/build/gcc-build/gcc'
/usr/bin/gcc -B/usr/bin  -g -O2 -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual -Wold-style-definition -Wc++-compat -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H  -o cc1-dummy c-lang.o stub-objc.o attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o c-ppoutput.o c-cppbuiltin.o c-objc-common.o c-dump.o c-pch.o c-parser.o  c-gimplify.o tree-mudflap.o c-pretty-print.o c-omp.o dummy-checksum.o \
          main.o  libbackend.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a ../libcpp/libcpp.a   ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a   -L/loongson/build/gcc-build/./gmp/.libs -L/loongson/build/gcc-build/./gmp/_libs -L/loongson/build/gcc-build/./mpfr/.libs -L/loongson/build/gcc-build/./mpfr/_libs -lmpfr -lgmp
collect2: ld terminated with signal 11 [Segmentation fault]
make[1]: *** [cc1-dummy] Error 1
make[1]: Leaving directory `/loongson/build/gcc-build/gcc'
make: *** [all-gcc] Error 2

[ 本帖最后由 华中科大一学生 于 2009-8-23 09:27 编辑 ]

本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2019-5-23 09:23 , Processed in 0.202351 second(s), 20 queries .

快速回复 返回顶部 返回列表