LinuxSir.cn,穿越时空的Linuxsir!

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

BLFS-6.3编译 Xorg 7.2过程

[复制链接]
发表于 2008-12-20 21:25:54 | 显示全部楼层 |阅读模式
LFS V6.3 & BLFS V6.3
LFS是中文文档,见http://youbest.cublog.cn
BLFS是英文文档.我是下载下来,开一个终端用lynx来浏览的,貌似links不支持鼠标复制.
参考网址: http://www.linuxfromscratch.org/blfs/view/stable/

    本来是打算用SlackWare12.1 DVD ISO 里的Xorg源码来编译的,懒得下载嘛,但由于有些包编译顺序不对,导致很多东西都没编译好,所以后面一直出错.所以就参照Beyond Linux® From Scratch Version 6.3的英文文档,把需要的东西wget下载,然后按照文档指导,花了一天时间,把Xorg基本环境编译出来了.最后加了个fluxbox,目前也就只做到这里了.本来还不打算BLFS的,但过于无聊,就BLFS下.见笑了.

准备工作:
mkdir xc &&
cd xc

export XORG_PREFIX="/usr"
export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc \
    --mandir=$XORG_PREFIX/share/man --localstatedir=/var"

install -v -m755 -d \
    /etc/X11/{app-defaults,fs,twm,xdm,xinit,xkb,xsm} &&
install -v -m755 -d $XORG_PREFIX/lib/X11 &&

for link in \
    /etc/X11/{app-defaults,fs,twm,xdm,xinit,xkb,xsm}
do
    ln -sv $link $XORG_PREFIX/lib/X11
done

下面是编译过程:

1.Xorg Protocol Headers

wget http://anduin.linuxfromscratch.o ... xorg/proto-7.2.wget

mkdir proto &&
cd proto &&
grep -v '^#' ../proto-7.2.wget | wget -i- -c \
    -B http://xorg.freedesktop.org/releases/individual/proto/

#Begin wget_install
for package in $(grep -v '^#' ../proto-7.2.wget)
do
packagedir=$(echo $package | sed 's/.tar.bz2//')
tar -xf $package
cd $packagedir
./configure $XORG_CONFIG
make install
cd ..
rm -rf $packagedir
rm -f $package
done 2>&1 | tee -a ../xorg-proto-7.2-compile.log #log the entire loop
#End wget_install

../wget_install &&
cd ..

2.pkg-config-0.22

wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.22.tar.gz

tar xvf pkg-config-0.22.tar.gz
cd pkg-config-0.22
./configure --prefix=/usr &&
make &&
make install &&
cd ..

3.Xorg Utilities

wget http://anduin.linuxfromscratch.o ... /xorg/util-7.2.wget

mkdir util &&
cd util &&
grep -v '^#' ../util-7.2.wget | wget -i- -c \
    -B http://xorg.freedesktop.org/releases/individual/util/

#Begin wget_install
for package in $(grep -v '^#' ../util-7.2.wget)
do
packagedir=$(echo $package | sed 's/.tar.bz2//')
tar -xf $package
cd $packagedir
./configure $XORG_CONFIG
make
make install
cd ..
rm -rf $packagedir
rm -f $package
done 2>&1 | tee -a ../xorg-util-7.2-compile.log #log the entire loop
#End wget_install

../wget_install &&
cd ..

4.libXau-1.0.3

wget http://xorg.freedesktop.org/rele ... ibXau-1.0.3.tar.bz2

tar xvf libXau-1.0.3.tar.bz2
cd libXau-1.0.3
./configure $XORG_CONFIG &&
make &&
make install &&
cd ..

5.libXdmcp-1.0.2

wget http://xorg.freedesktop.org/rele ... Xdmcp-1.0.2.tar.bz2

tar xvf libXdmcp-1.0.2.tar.bz2
cd libXdmcp-1.0.2
./configure $XORG_CONFIG &&
make &&
make install &&
cd ..

6.xcb-proto-1.0

wget http://xcb.freedesktop.org/dist/xcb-proto-1.0.tar.bz2

tar xvf xcb-proto-1.0.tar.bz2
cd xcb-proto-1.0
./configure $XORG_CONFIG &&
make &&
make install &&
install -dv -m755 ${XORG_PREFIX}/share/doc/xcb-proto-1.0 &&
install -v -m644 doc/* ${XORG_PREFIX}/share/doc/xcb-proto-1.0 &&
cd ..

7.libxml2-2.6.31   

wget http://xmlsoft.org/sources/libxml2-2.6.31.tar.gz

tar xvf libxml2-2.6.31.tar.gz
cd libxml2-2.6.31
./configure --prefix=/usr &&
make &&
make install &&
cd ..

8.libxslt-1.1.22

wget http://xmlsoft.org/sources/libxslt-1.1.22.tar.gz

tar xvf libxslt-1.1.22.tar.gz
cd libxslt-1.1.22
./configure --prefix=/usr &&
make &&
make install &&
cd ..

9.libxcb-1.0

wget http://xcb.freedesktop.org/dist/libxcb-1.0.tar.bz2
wget http://www.linuxfromscratch.org/ ... sloppy_lock-1.patch

tar xvf libxcb-1.0.tar.bz2
cd libxcb-1.0
patch -Np1 -i ../libxcb-1.0-sloppy_lock-1.patch &&
./configure $XORG_CONFIG --docdir='${datadir}'/doc/libxcb-1.0 &&
make &&
make install &&
cd ..

10.Ed-0.8

wget http://ftp.gnu.org/pub/gnu/ed/ed-0.8.tar.bz2

tar xvf ed-0.8.tar.bz2
cd ed-0.8
./configure --prefix=/usr &&
make &&
make install &&
make install-man &&
cd ..


11.expat-2.0.1

wget http://downloads.sourceforge.net/expat/expat-2.0.1.tar.gz

tar xvf expat-2.0.1.tar.gz
cd expat-2.0.1
./configure --prefix=/usr &&
make &&
make install &&
install -v -m755 -d /usr/share/doc/expat-2.0.1 &&
install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.0.1 &&
cd ..

12.FreeType-2.3.7

wget http://downloads.sourceforge.net/freetype/freetype-2.3.7.tar.bz2
wget http://downloads.sourceforge.net ... e-doc-2.3.7.tar.bz2

tar xvf freetype-2.3.7.tar.bz2
cd freetype-2.3.7

tar xf ../freetype-doc-2.3.7.tar.bz2 \
    --strip-components=2 -C docs

sed -i -r -e 's:.*(#.*BYTE.*) .*:\1:' \
          -e 's:.*(#.*SUBPIX.*) .*:\1:' \
          include/freetype/config/ftoption.h &&
./configure --prefix=/usr &&
make &&
make install &&
install -v -m755 -d /usr/share/doc/freetype-2.3.7 &&
cp -v -R docs/* /usr/share/doc/freetype-2.3.7 &&
cd ..

13.Fontconfig-2.4.2

wget http://fontconfig.org/release/fontconfig-2.4.2.tar.gz

tar xvf fontconfig-2.4.2.tar.gz
cd fontconfig-2.4.2
./configure --prefix=/usr \
    --sysconfdir=/etc --localstatedir=/var \
    --disable-docs --without-add-fonts \
    --with-docdir=/usr/share/doc/fontconfig-2.4.2 &&
make

make install &&
install -v -m644 doc/*.3 /usr/share/man/man3 &&
install -v -m644 doc/*.5 /usr/share/man/man5 &&
install -v -m755 \
        -d /usr/share/doc/fontconfig-2.4.2/fontconfig-devel &&
install -v -m644 doc/*.{html,pdf,txt} \
        /usr/share/doc/fontconfig-2.4.2 &&
install -v -m644 doc/fontconfig-devel/* \
        /usr/share/doc/fontconfig-2.4.2/fontconfig-devel

cd ..

14.Xorg Libraries

wget http://anduin.linuxfromscratch.o ... 3/xorg/lib-7.2.wget
wget http://www.linuxfromscratch.org/ ... 1.2-badargs-1.patch
wget http://www.linuxfromscratch.org/ ... -pcf_parser-1.patch

mkdir lib &&
cd lib &&
grep -v '^#' ../lib-7.2.wget | wget -i- -c \
    -B http://xorg.freedesktop.org/releases/individual/lib/

#Begin wget_install
for package in $(grep -v '^#' ../lib-7.2.wget)
do
packagedir=$(echo $package | sed 's/.tar.bz2//')
tar -xf $package
cd $packagedir
case $(basename "$PWD") in
    libX11-1.1.2 )
       patch -Np1 -i ../../libX11-1.1.2-badargs-1.patch &&
       sed -i 's/_XGet/XGet/' modules/im/ximcp/imDefLkup.c
       ;;
    libXfont-1.2.8 )
       patch -Np1 -i ../../libXfont-1.2.8-pcf_parser-1.patch &&
       sed -i 's/(ft_isdigit/(isdigit/' src/FreeType/fttools.c
       ;;
esac
./configure $XORG_CONFIG
make
make install
ldconfig
cd ..
rm -rf $packagedir
rm -f $package
done 2>&1 | tee -a ../xorg-lib-7.2-compile.log #log the entire loop
#End wget_install

../wget_install &&
cd ..

Tips:
这里要重新编译下libXfont-1.2.8,配置的时候加下面的参数,要不然的话后面xorg-server编译通过不

了.
./configure $XORG_CONFIG CFLAGS='-Dft_isdigit=isdigit'
make
make install
ldconfig


15.Xbitmaps-1.0.1

wget http://xorg.freedesktop.org/rele ... tmaps-1.0.1.tar.bz2

tar xvf xbitmaps-1.0.1.tar.bz2
cd xbitmaps-1.0.1
./configure $XORG_CONFIG &&
make install &&
cd ..

16.libpng-1.2.29

wget http://downloads.sourceforge.net/libpng/libpng-1.2.29.tar.bz2

tar xvf libpng-1.2.29.tar.bz2
cd libpng-1.2.29
./configure --prefix=/usr &&
make &&
make install &&
install -v -m755 -d /usr/share/doc/libpng-1.2.29 &&
install -v -m644 README libpng-1.2.29.txt \
    /usr/share/doc/libpng-1.2.29 &&
cd ..

17.libdrm-2.3.0

wget http://dri.freedesktop.org/libdrm/libdrm-2.3.0.tar.gz

tar xvf libdrm-2.3.0.tar.gz
cd libdrm-2.3.0
./configure --prefix=$XORG_PREFIX &&
make &&
make install &&
cd ..

18.MesaLib-6.5.2

wget http://downloads.sourceforge.net/mesa3d/MesaLib-6.5.2.tar.bz2

tar xvf MesaLib-6.5.2.tar.bz2
cd MesaLib-6.5.2
make linux-dri-x86 OPT_FLAGS="-O2 -fno-strict-aliasing" \
    DRI_DRIVER_INSTALL_DIR=${XORG_PREFIX}/lib/X11/modules/dri \
    X11_INCLUDES=-I${XORG_PREFIX}/include \
    EXTRA_LIB_PATH=-L${XORG_PREFIX}/lib

make install INSTALL_DIR=${XORG_PREFIX} \
    DRI_DRIVER_INSTALL_DIR=${XORG_PREFIX}/lib/X11/modules/dri &&
install -dv ${XORG_PREFIX}/share/doc/MesaLib-6.5.2 &&
install -v -m644 docs/* ${XORG_PREFIX}/share/doc/MesaLib-6.5.2

ln -s -v ${XORG_PREFIX}/include/GL /usr/include
cd ..

19.Xorg Applications

wget http://anduin.linuxfromscratch.o ... 3/xorg/app-7.2.wget

mkdir app &&
cd app &&
grep -v '^#' ../app-7.2.wget | wget -i- -c \
    -B http://xorg.freedesktop.org/releases/individual/app/

#Begin wget_install
for package in $(grep -v '^#' ../app-7.2.wget)
do
packagedir=$(echo $package | sed 's/.tar.bz2//')
tar -xf $package
cd $packagedir
./configure $XORG_CONFIG
make
make install
cd ..
rm -rf $packagedir
rm -f $package
done 2>&1 | tee -a ../xorg-app-7.2-compile.log #log the entire loop
#End wget_install

../wget_install &&
cd ..

20.xcursor-themes-1.0.1

wget http://xorg.freedesktop.org/rele ... hemes-1.0.1.tar.bz2

tar xvf xcursor-themes-1.0.1.tar.bz2
cd xcursor-themes-1.0.1
./configure $XORG_CONFIG &&
make &&
make install &&
cd ..


21.Xorg Fonts

wget http://anduin.linuxfromscratch.o ... /xorg/font-7.2.wget

mkdir font &&
cd font &&
grep -v '^#' ../font-7.2.wget | wget -i- -c \
    -B http://xorg.freedesktop.org/releases/individual/font/

#Begin wget_install
for package in $(grep -v '^#' ../font-7.2.wget)
do
packagedir=$(echo $package | sed 's/.tar.bz2//')
tar -xf $package
cd $packagedir
./configure $XORG_CONFIG
make
make install
cd ..
rm -rf $packagedir
rm -f $package
done 2>&1 | tee -a ../xorg-font-7.2-compile.log #log the entire loop
#End wget_install

../wget_install &&
install -v -d -m755 /usr/share/fonts &&
ln -svn $XORG_PREFIX/lib/X11/fonts/OTF /usr/share/fonts/X11-OTF &&
ln -svn $XORG_PREFIX/lib/X11/fonts/TTF /usr/share/fonts/X11-TTF &&
cd ..

22.XML:arser-2.34

wget http://cpan.org/authors/id/M/MS/MSERGEANT/XML-Parser-2.34.tar.gz

tar xvf XML-Parser-2.34.tar.gz
cd XML-Parser-2.34
perl Makefile.PL
perl Makefile.PL PREFIX=/home/me/perl INSTALLDIRS=perl
make
make install
cd ..

23.XKeyboardConfig-1.2

wget http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-1.2.tar.bz2

tar xvf xkeyboard-config-1.2.tar.bz2
cd xkeyboard-config-1.2
./configure $XORG_CONFIG --with-xkb-rules-symlink=xorg &&
make &&
make install &&
install -dv -m755 $XORG_PREFIX/share/doc/xkeyboard-config-1.2 &&
install -v -m644 docs/{README,HOWTO}* \
    $XORG_PREFIX/share/doc/xkeyboard-config-1.2 &&
cd ..

24.Luit-1.0.2

wget http://xorg.freedesktop.org/rele ... /luit-1.0.2.tar.bz2

tar xvf luit-1.0.2.tar.bz2
cd luit-1.0.2
./configure $XORG_CONFIG \
    --with-localealiasfile=$XORG_PREFIX/share/X11/locale/locale.alias &&
make &&
make install &&
cd ..


25.Xorg-Server-1.2.0

wget http://xorg.freedesktop.org/rele ... erver-1.2.0.tar.bz2
wget http://www.linuxfromscratch.org/ ... .0-security-1.patch

tar xvf xorg-server-1.2.0.tar.bz2
patch -Np1 -i ../xorg-server-1.2.0-security-1.patch
./configure $XORG_CONFIG \
    --with-mesa-source=/root/Mesa-6.5.2 \
    --with-module-dir=$XORG_PREFIX/lib/X11/modules \
    --with-dri-driver-path=$XORG_PREFIX/lib/X11/modules/dri \
    --with-xkb-output=/var/lib/xkb \
    --enable-install-setuid &&
make &&
make install &&
cd ..

Tips:
--with-mesa-source=/root/Mesa-6.5.2
因为我的Mesa-6.5.2的源代码在/root/下,官方文档说这里要用绝对路径
编译时间比较长.

26.Xorg Drivers

wget http://anduin.linuxfromscratch.o ... org/driver-7.2.wget

mkdir driver &&
cd driver &&
grep -v '^#' ../driver-7.2.wget | wget -i- -c \
    -B http://xorg.freedesktop.org/releases/individual/driver/

#Begin wget_install
for package in $(grep -v '^#' ../driver-7.2.wget)
do
packagedir=$(echo $package | sed 's/.tar.bz2//')
tar -xf $package
cd $packagedir
case $(basename "$PWD") in
xf86-input-evdev-[0-9]* | xf86-video-ati-[0-9]* | \
xf86-video-fbdev-[0-9]* | xf86-video-glint-[0-9]* | \
xf86-video-newport-[0-9]* )
      sed -i -e "s/\xc3\xb8/\\\\[\/o]/" \
             -e "s/\xc3\xa4/\\\\[:a]/" \
             -e "s/\xc3\x9c/\\\\[:U]/" man/*.man
      ;;
esac &&
./configure $XORG_CONFIG \
      --with-xorg-module-dir=$XORG_PREFIX/lib/X11/modules &&
make &&
make install &&
cd ..
rm -rf $packagedir
rm -f $package
done 2>&1 | tee -a ../xorg-driver-7.2-compile.log #log the entire loop
#End wget_install

../wget_install &&


至此,Xorg 7.2的所有编译工作完成.接下来就是配置xorg,安装窗口管理器等,我自己编译的是fluxbox.
发表于 2008-12-21 09:14:36 | 显示全部楼层
有點可惜,樓主重新裝 X,其實 SVN 版的 BLFS 手冊已提升為 Xorg-7.4 了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-21 19:19:14 | 显示全部楼层
其实也没什么,什么版本倒不要紧,关键是过程,能用就好
回复 支持 反对

使用道具 举报

发表于 2008-12-23 10:41:02 | 显示全部楼层
svn版本根本还不完善,搞不了。我用了自动编译工具,只能自动编译一些小软件,像Xorg这种核心大规模的软件老出问题,害得我一再改脚本,而且还干脆参考了BLFS6.3手册,手动下载软件和安装才行……折腾了我一个下午,不过总算学会了自动编译LFS+BLFS,哈哈。
回复 支持 反对

使用道具 举报

发表于 2008-12-23 10:49:20 | 显示全部楼层
呵呵,这样你的收获不是更大了?
回复 支持 反对

使用道具 举报

发表于 2008-12-23 11:05:30 | 显示全部楼层
恩,是的。就像爱迪生做灯丝失败了1000多次一样,最大的收获是知道这些材料不能做灯丝。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-23 11:43:33 | 显示全部楼层
呵呵,接触了LFS才感觉到LINUX有点了解,不过起步算是比较晚的,虽然很早以前就知道LINUX,但都不深入。
以前装的那些发行版,都是玩桌面,根本没说得上是用,而是玩。
回复 支持 反对

使用道具 举报

发表于 2009-1-14 22:45:11 | 显示全部楼层
楼主少安装了一个包,libpthread-stubs-0.1.tar.bz2,大概在第5和第6个包附近,
第22个包XML...
中下面两天INSTALL中说选一条执行就可以,一般第一条就可以,安装目录不规范才可能需要第二条
perl Makefile.PL
perl Makefile.PL PREFIX=/home/me/perl INSTALLDIRS=perl
回复 支持 反对

使用道具 举报

发表于 2010-4-22 12:32:00 | 显示全部楼层
最后一步安装Xorg Drivers
从脚本来看是下载driver-7.2.wget里的全部包,然后全部安装。
我看了一下driver-7.2.wget里面的包,很多与我自己的显卡无关,这样全部装上会不会有什么问题?
另外是不是也有悖于精简的思想?

如果我只想安装与自己的显卡对应的驱动,又该怎么选择?
回复 支持 反对

使用道具 举报

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

本版积分规则

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