LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2782|回复: 9

从stage1开始用gcc4编译gentoo-2005至xfce4全程记录

[复制链接]
发表于 2005-5-2 17:41:26 | 显示全部楼层 |阅读模式
1:stage1

stage1的安装基本按照下面的文章进行
http://www.linuxsir.cn/bbs/showt ... mp;highlight=stage1

tar jxvpf stage1-x86-*.tar.bz2 &&
cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf &&
mount -o bind /proc /mnt/gentoo/proc &&
chroot /mnt/gentoo/ /usr/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login
  env-update &&
source /etc/profile &&
emerge sync &&
export CONFIG_PROTECT="-*" &&
export USE="-* bootstrap build" &&
emerge portage &&
unset USE &&
nano -w /etc/make.conf &&
cd /usr/portage &&
scripts/bootstrap.sh

在修改/etc/make.conf时,加入了以下参数( 坛子里MACHINE的参数:>  ):

CFLAGS="-pipe -march=athlon-xp -mfpmath=sse -mmmx -msse -m3dnow -maccumulate-outgoing-args -minline-all-stringops -momit-leaf-frame-pointer -O3 -ffast-math -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -ftracer -funroll-loops"

CXXFLAGS="${CFLAGS}"

LDFLAGS="-Wl,-O3 -Wl,--enable-new-dtags -Wl,--sort-common -s"

MAKEOPTS="-j4"

USE="-java"

2:stage2

#emerge system  

在编译SASH时出错,直接把现有系统的SASH拷贝过去,然后EMERGE --INJECT,过了SASH的编译,继续EMREGE 一切OK

3:stage3

#cp /etc/make.conf /etc/mymake.conf &&
#emerge sync &&
#emerge -up world &&
#emerge -u world

#ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
#emerge sys-kernel/gentoo-sources &&
#cd /usr/src/linux &&
#source /etc/profile

#emerge sync
# nano -w /etc/portage/package.keywords
=sys-devel/gcc-4.0.0 -*
=sys-devel/binutils-2.15.97 -*
=sys-libs/glibc-2.3.5.20050421 -*

# nano -w /etc/portage/package.unmask
=sys-libs/glibc-2.3.5.20050421
=sys-devel/gcc-4.0.0

#emerge gcc binutils glibc
#emerge gcc binutils glibc
#emerge -e system

emerge python 出错
#emerge --resume --skipfirst -e system
编译到gcc4时,不想再编译,直接 CTRL+C退出
再次 #emerge --resume --skipfirst -e system
到glibc时,再次CTRL+C退出
#emerge --resume --skipfirst -e system
编译wget出错,继续emerge --resume --skipfirst -e system

OK,到此基本系统全部搞定,中间出的错误应该不影响系统的运行
下面的就看个人喜好了。我自己的是:

#emerge gentoo-sources
#cd /usr/src/linux
#make menuconfig
#make && make modules_install
#cp arch/i386/boot/bzImage /boot/kernel-2.6.11-gentoo-r3
# cp .config /boot/config-2.6.11-gentoo-r3

# emerge coldplug
# rc-update add coldplug boot

# emerge  hotplug
# rc-update add hotplug default

# nano -w /etc/fstab

#echo hostname /etc/hostname
#nano -w /etc/env.d/net  修改网卡IP和GATEWAY,自己定
# rc-update add net.eth0 default

# emerge syslog-ng
# rc-update add syslog-ng default

# emerge vixie-cron
# rc-update add vixie-cron default

#nano -w /etc/make.conf
按自己的机器配置修改

#emerge xorg-x11
在安装xorg-x11(xterm)时出错
出错信息如下:
    [PHP] mkdir /var/tmp/portage/xterm-200-r1/image/usr/bin
/bin/install: cannot stat `resize': No such file or directory
make: *** [install] Error 1

!!! ERROR: x11-terms/xterm-200-r1 failed.
!!! Function src_install, Line 53, Exitcode 2
!!! (no error message)
!!! If you need support, post the topmost build error, NOT this status message.[/PHP]  

找到Makefile文件,把install部分含 resize的部分注释掉,(xterm不太重要,这样作不会影响系统使用,以后用mlterm代替xterm)

#emerge xfce4 无错误发生
#emerge mozilla-firefox 出错,具体信息没记住,大概的就是下面的地方
    /var/tmp/portage/mozilla-firefox-1.0.3/work/mozilla/security/nss/lib/pki/L*/asymmkey.o出错
  ../../../../dist/private/nss/oiddata.h:h:46:error:array type has incomplete element type
直接找到oiddata.h的46行,把那行注释掉,然后
  #cd /var/tmp/portage/mozilla-firefox-1.0.3/work
  # make
编译成功
   #ebuild /usr/portage/www-client/mozilla-firefox/mozilla-firefox.1.0.3.ebuild install
N长时间后,INSTALL完成
    #ebuild /usr/portage/www-client/mozilla-firefox/mozilla-firefox.1.0.3.ebuild qmerge

至此firefox安装完毕;xfce4的桌面环境也有了,下一步汉化,看了很多文章,有几篇不错的,具体是哪篇现在不好找了,就是修改/etc/env.d/100i18n(设置locale), 和/etc/env.d/110XIM(设置fcitx输入法的变量),
#echo "startxfce4" >> ~/.xinitrc
#startx

开始享受桌面环境!!!!


附emerge --info
[PHP]Gentoo Base System version 1.6.11
Portage 2.0.51.20-r5 (default-linux/x86/2005.0, gcc-4.0.0, glibc-2.3.5.20050421-r0, 2.6.11-gentoo-r6 i686)
=================================================================
System uname: 2.6.11-gentoo-r6 i686 AMD Athlon(tm) XP 1700+
dev-lang/python:     2.3.5
sys-apps/sandbox:    1.2.3
sys-devel/autoconf:  2.13, 2.59-r6
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.5
sys-devel/binutils:  2.15.97
sys-devel/libtool:   1.5.16
virtual/os-headers:  2.6.11
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-pipe -march=athlon-xp -mfpmath=sse -mmmx  -msse -m3dnow -maccumulate-outgoing-args -minline-all-stringops  -momit-leaf-frame-pointer -O3 -ffast-math -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -ftracer -funroll-loops"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-pipe -march=athlon-xp -mfpmath=sse -mmmx  -msse -m3dnow -maccumulate-outgoing-args -minline-all-stringops  -momit-leaf-frame-pointer -O3 -ffast-math -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -ftracer -funroll-loops"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig distlocks sandbox sfperms strict"
GENTOO_MIRRORS="http://ftp.gentoo.or.kr/ http://gentoo.gg3.net/ ftp://mirror.averse.net/pub/gentoo http://gentoo.netnitco.net ftp://gg3.net/pub/linux/gentoo/"
LANG="zh_CN.gb2312"
LDFLAGS="-Wl,-O3 -Wl,--enable-new-dtags -Wl,--sort-common -s"
MAKEOPTS="-j4"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="x86 3dnow 3dnowext X alsa apm arts avi berkdb bitmap-fonts cjk crypt directfb emboss encode fam fortran gdbm gif gnome gpm gtk gtk2 imlib java jpeg kde libg++ libwww mad mikmod mmx mmxext motif mozilla mp3 mpeg ncurses nls ogg oggvorbis opengl oss pam pdflib perl png python qt quicktime readline sdl spell sse ssl svga tcpd truetype truetype-fonts type1-fonts vorbis xfce xml2 xmms xv zlib"
Unset:  ASFLAGS, CTARGET, LC_ALL, LINGUAS, PORTDIR_OVERLAY[/PHP]
发表于 2005-5-2 18:20:47 | 显示全部楼层
强啊,glibc也不编就可以用了 :ask
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-2 18:57:40 | 显示全部楼层
#emerge gcc binutils glibc
#emerge gcc binutils glibc
在这作了2次,没必要再作了
回复 支持 反对

使用道具 举报

发表于 2005-5-2 21:46:41 | 显示全部楼层
Post by lomat
#emerge gcc binutils glibc
#emerge gcc binutils glibc
在这作了2次,没必要再作了


为什么要做两次?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-2 22:24:03 | 显示全部楼层
第一次编译GCC,BINUTILS,GLIBC,用的是以前的GCC3.4和以前的GLIBC编译的,
第二次编译GCC,BINUTILS,GLIBC,用的是刚编译好的GCC4,和GLIBC
如果你知道什么是PLFS的话,就更好理解了
回复 支持 反对

使用道具 举报

发表于 2005-5-6 12:23:13 | 显示全部楼层
gcc4到stage3后才用上的?

楼主,你的use里面gnome和kde都有啊,你的桌面用的是xfce4还是那两个?
回复 支持 反对

使用道具 举报

发表于 2005-5-24 13:00:32 | 显示全部楼层
Post by lomat
第一次编译GCC,BINUTILS,GLIBC,用的是以前的GCC3.4和以前的GLIBC编译的,
第二次编译GCC,BINUTILS,GLIBC,用的是刚编译好的GCC4,和GLIBC
如果你知道什么是PLFS的话,就更好理解了





我看你都沒用gcc-config選擇使用GCC4作用default的compiler,那麽無論你再重編多少次都還是原gcc3.3.5的
回复 支持 反对

使用道具 举报

发表于 2005-5-24 13:23:25 | 显示全部楼层
嗯,最关键的是要在第一次编译完gcc4以后,用gcc-config来切换环境。这步不做,还是在用原来的gcc编译系统。而且,在bootstrap之前就可以先用-onlyshot 来编译最新的linux-headers,否则你的系统也不是彻底得新。

CFLAGS中有关CPU的参数,你可以用#cat /proc/cpuinfo来检查你自己的cpu,以获得最适合自己的参数。

gcc4.0.0.ebuild这个已经不推荐使用,因为确实会发生上述几个包编译不过的情况。但是用最新的ebuild可以全部顺利编译。所以强烈建议在stage2的一开始就首先编译gcc4。然后立即改变gcc-config到新的gcc4,再继续编译glibc。然后不要接着编译整个system,而是首先把bootstrap中的所有包从新编译。在emerge system时,首先编译m4、automake的各个版本,以及autoconf。因为这几个包是所谓根基,在以后的每个编译中都会用到。这样编译的话,在stage3完成后,不必再emerge -e system了。
回复 支持 反对

使用道具 举报

发表于 2005-5-24 13:47:17 | 显示全部楼层
我的系统是完全gcc4的,不过现在kde的问题还是比较多的,
和多媒体相关的部分比较严重,其他的到没有什么问题,
kopete, quanta,编译失败,

BTW,如果你用的是gcc-4.0-2005-0521版本,你的kdelibs等许多东西编译都会出现问题。
gcc语法检查的更严格了。

不过如果你没有使用gnome的话,那还是比较合适的,gcc4编译的gnome运行速度向比较以前,
有十分明显的提高,而且目前没有发现有什么问题。
回复 支持 反对

使用道具 举报

发表于 2005-5-24 14:07:09 | 显示全部楼层
Post by younker
我的系统是完全gcc4的,不过现在kde的问题还是比较多的,
和多媒体相关的部分比较严重,其他的到没有什么问题,
kopete, quanta,编译失败,

BTW,如果你用的是gcc-4.0-2005-0521版本,你的kdelibs等许多东西编译都会出现问题。
gcc语法检查的更严格了。

不过如果你没有使用gnome的话,那还是比较合适的,gcc4编译的gnome运行速度向比较以前,
有十分明显的提高,而且目前没有发现有什么问题。

我在用gcc-4.0-20050521编译KDE CVS,不知道会不会有什么问题,这里有kde cvs 的split ebuild

http://genkdesvn.berlios.de/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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