|

楼主 |
发表于 2009-6-9 12:42:59
|
显示全部楼层
继续,LFS第六章
构建LFS系统
6.1. 尽量简单的编译一个LFS系统雏形,尽量不要使用编译器优化参数,因为这带来的速度提升几乎可以忽略不计,但带来的坏处,可能导致程序运行不稳定。不要同时编译几个包,因为这样可能产生硬链接到/tools,如果tools目录被删除,可能会出现问题。
6.2. 准备虚拟内核文件系统
export LFS=/mnt/lfs
mkdir -pv $LFS/{dev,proc,sys}
建立初始设备节点(console和null设备)
mknod -m 600 $LFS/dev/console c 5 1
mknod -m 666 $LFS/dev/null c 1 3
挂载并绑定设备目录
mount -v --bind /dev $LFS/dev
挂载虚拟内核文件系统
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
6.3. 包管理
集中流行的包管理思想,LFS不提供包管理系统
6.4. 进入Chroot环境
chroot "$LFS" /tools/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h
用env -i 表示清空所有环境变量,只重设后面的几个。在这里也可以设置CFLAGS或者CXXFLAGS
进入chroot环境后,由于还没建立/etc/passwd 文件,所以shell提示符前面为:
I have no name!:/#
到了这点上面,$LFS变量就可以不管了,因为接下来所有的工作都被限制在LFS文件系统里面了。
Bash已经把$LFS当作root (/) 目录来处理了。
6.5. 增加目录
增加文件结构
mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv /usr/{,local/}share/man/man{1..8}
for dir in /usr /usr/local; do
ln -sv share/{man,doc,info} $dir
done
case $(uname -m) in
x86_64) ln -sv lib /lib64 && ln -sv lib /usr/lib64 ;;
esac
mkdir -v /var/{lock,log,mail,run,spool}
mkdir -pv /var/{opt,cache,lib/{misc,locate},local}
以上文件夹结构,遵循Filesystem Hierarchy Standard (FHS)
http://www.pathname.com/fhs/
6.6. 增加必要的文件和软链接
ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
ln -sv bash /bin/sh
touch /etc/mtab
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF
cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
mail:x:34:
nogroup:x:99:
EOF
完整的glibc安装好之后,passwd和group文件已经建立,现在用户名和组可以生效了。
exec /tools/bin/bash --login +h
使用+h参数,屏蔽bash的内部路径哈希。避免bash使用旧的文件路径,能够保证新编译的代码马上可以被利用。
建立一些空文件并赋予它们写权限,以便login, agetty, init以及其他一些程序能够记录系统日志及登陆信息
touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chgrp -v utmp /var/run/utmp /var/log/lastlog
chmod -v 664 /var/run/utmp /var/log/lastlog
注:
/var/run/utmp 记录已经登陆的用户信息, /var/log/wtmp 记录所有登陆及注销信息,
/var/log/lastlog 记录每个用户的最后登陆时间, /var/log/btmp 记录登陆失败信息。
6.7. Linux-2.6.29.4 API Headers
cd /sources
cd linux-2.6.29.4/
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
cp -rv dest/include/* /usr/include
6.8. Man-pages-3.21
cd /sources
tar -jxvf tar/man-pages-3.21.tar.bz2
cd man-pages-3.21/
make install
6.9. Glibc-2.10.1
cd /sources/glibc-2.10.1/
tar -jxvf ../tar/glibc-libidn-2.10.1.tar.bz2
mv glibc-libidn-2.10.1 libidn
当执行glibc的make install的时候,会调用一个perl脚本进行测试,
现在的工具链还是指向/tools,测试会针对以前编译的glibc,
以下脚本可以让测试指向刚刚编译的glibc
DL=$(readelf -l /bin/sh | sed -n 's@.*interpret.*/tools\(.*\)]$@\1@p')
sed -i "s|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=$DL -o|" \
scripts/test-installation.pl
unset DL
ldd命令自带了bash的特殊语法,为了避免其他的/bin/sh对ldd的影响,
最好把默认解释器改成/bin/bash,关于这个鸟问题,在BLFS 这本破书的shell章节中也提到了
sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
修复一个make check可能出现的错误
sed -i s/utf8/UTF-8/ libio/tst-fgetwc.c
sed -i '/tst-fgetws-ENV/ a\
tst-fgetwc-ENV = LOCPATH=$(common-objpfx)localedata' libio/Makefile
mkdir -v ../glibc-build
cd ../glibc-build
为x86机器增加必要的CFLAGS编译参数,-pipe加速编译,-O3提高程序的性能。
case `uname -m` in
i?86) echo "CFLAGS += -march=i686 -mtune=native -O3 -pipe" > configparms ;;
esac
准备编译
../glibc-2.10.1/configure --prefix=/usr \
--disable-profile --enable-add-ons \
--enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc
开始编译,等N久!
make
为防止编译测试的几个失败可能,从源码目录拷贝一个东东。
cp -v ../glibc-2.10.1/iconvdata/gconv-modules iconvdata
make -k check 2>&1 | tee glibc-check-log
grep Error glibc-check-log
在测试posix/annexc的时候,有一个可忽略的错误。
这和宿主系统有关,这里不用理它。
虽然无关紧要,为了防止glibc安装阶段报错缺少说ld.so.conf,还是touch一个吧
touch /etc/ld.so.conf
make install
定义locale集合
mkdir -pv /usr/lib/locale
localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i de_DE -f UTF-8 de_DE.UTF-8
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i en_US -f UTF-8 en_US.UTF-8
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP
localedef -i tr_TR -f UTF-8 tr_TR.UTF-8
localedef -i zh_CN -f GB18030 zh_CN.GB18030
其实这里我只要三个就可以了
localedef -i en_US -f ISO-8859-1 en_US
localedef -i en_US -f UTF-8 en_US.UTF-8
localedef -i zh_CN -f GB18030 zh_CN.GB18030
安装其他没有执行localedef定义的语言包(可选)
make localedata/install-locales
配置glibc
尽管当nsswitch.conf不存在或非法时,Glibc会默认产生,但在网络环境下,可能不是很理想。
所以还是创建一个吧,另外,时区也应该配置了。
cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf
passwd: files
group: files
shadow: files
hosts: files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
# End /etc/nsswitch.conf
EOF
选择时区
tzselect
这里最后应该是 TZ='Asia/Shanghai';
增加/etc/localtime
cp -v --remove-destination /usr/share/zoneinfo/Asia/Shanghai \
/etc/localtime
配置动态加载
cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
# End /etc/ld.so.conf
EOF
6.10. 重新调整工具链
先备份,然后用第五章里面调整过的工具链替换。
mv -v /tools/bin/{ld,ld-old}
mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
mv -v /tools/bin/{ld-new,ld}
ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld
接下来,调整gcc的spec文件,以便指向新的动态链接库。
gcc -dumpspecs | sed -e 's@/tools@@g' \
-e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
-e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \
`dirname $(gcc --print-libgcc-file-name)`/specs
最好仔细检查一下specs文件是不是真的修改了。
测试一下新的工具链
echo 'main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
应该出现以下提示
[Requesting program interpreter: /lib/ld-linux.so.2]
grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
应该出现
/usr/lib/crt1.o succeeded
/usr/lib/crti.o succeeded
/usr/lib/crtn.o succeeded
确保编译器使用了正确的头文件
grep -B1 '^ /usr/include' dummy.log
应该输出
#include <...> search starts here:
/usr/include
再看看新的编译器是否使用了正确的查找路径
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
应该输出
SEARCH_DIR("/tools/i686-pc-linux-gnu/lib")
SEARCH_DIR("/usr/lib")
SEARCH_DIR("/lib");
再检查是不是使用了正确的libc
grep "/lib.*/libc.so.6 " dummy.log
应该输出
attempt to open /lib/libc.so.6 succeeded
最后一点,确认gcc使用了正确的动态链接器
grep found dummy.log
应该输出
found ld-linux.so.2 at /lib/ld-linux.so.2
如果一切都没问题,那么清楚测试文件
rm -v dummy.c a.out dummy.log
6.11. Zlib-1.2.3
cd /sources
tar -xvf tar/zlib-1.2.3.tar.bz2
cd zlib-1.2.3/
./configure --prefix=/usr --shared --libdir=/lib
make
make check
make install
刚才的命令安装了一个.so文件在/lib目录,我们将它移动并重新链接到/usr/lib
rm -v /lib/libz.so
ln -sfv ../../lib/libz.so.1.2.3 /usr/lib/libz.so
编译静态链接库
make clean
./configure --prefix=/usr
make
make check
make install
修正静态链接库的权限
chmod -v 644 /usr/lib/libz.a
6.12. Binutils-2.19.1
cd /sources/binutils-2.19.1/
验证新的chroot环境内,PTYs工作是否正常
expect -c "spawn ls"
正常应该输出
spawn ls
rm -fv etc/standards.info
sed -i.bak '/^INFO/s/standards.info //' etc/Makefile.in
sed -i -e 's/getline/get_line/' libiberty/testsuite/test-demangle.c
mkdir -v ../binutils-build
cd ../binutils-build
../binutils-2.19.1/configure --prefix=/usr \
--enable-shared
make tooldir=/usr
make check
make tooldir=/usr install
cp -v ../binutils-2.19.1/include/libiberty.h /usr/include
6.13. GMP-4.3.1
cd /sources
tar -xvf tar/gmp-4.3.1.tar.bz2
cd gmp-4.3.1/
./configure --prefix=/usr --enable-cxx --enable-mpbsd
make
make check 2>&1 | tee gmp-check-log
awk '/tests passed/{total+=$2} ; END{print total}' gmp-check-log
make install
mkdir -v /usr/share/doc/gmp-4.3.1
cp -v doc/{isa_abi_headache,configuration} doc/*.html \
/usr/share/doc/gmp-4.3.1
6.14. MPFR-2.4.1
cd /sources
tar -xvf tar/mpfr-2.4.1.tar.bz2
cd mpfr-2.4.1/
./configure --prefix=/usr --enable-thread-safe
make
make check
make install
安装帮助文档
make html
mkdir -p /usr/share/doc/mpfr-2.4.1
find . -name \*.html -type f -exec cp -v \{} /usr/share/doc/mpfr-2.4.1 \;
6.15. GCC-4.4.0 (第三次编译gcc-4.4.0)
为了防止重复修改源码导致编译出错,删除以前的源码目录,重新弄一个!
rm -rf /sources/gcc-4.4.0/
cd /sources
tar -jxvf tar/gcc-4.4.0.tar.bz2
cd gcc-4.4.0
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
在5.1.0 gcc4 第二遍的时候
case `uname -m` in
i?86) sed -i 's/^XCFLAGS =$/& -fomit-frame-pointer/' \
gcc/Makefile.in ;;
esac
这里也要做一次,呵呵。
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
mkdir -v ../gcc-build
cd ../gcc-build
../gcc-4.4.0/configure --prefix=/usr \
--libexecdir=/usr/lib --enable-shared \
--enable-threads=posix --enable-__cxa_atexit \
--enable-clocale=gnu --enable-languages=c,c++ \
--disable-multilib --disable-bootstrap
make
make -k check
../gcc-4.4.0/contrib/test_summary
make install
兼容链接
ln -sv ../usr/bin/cpp /lib
ln -sv gcc /usr/bin/cc
测试工具链
echo 'main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
正确输出
[Requesting program interpreter: /lib/ld-linux.so.2]
grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
正确输出
/usr/lib/gcc/i686-pc-linux-gnu/4.4.0/../../../crt1.o succeeded
/usr/lib/gcc/i686-pc-linux-gnu/4.4.0/../../../crti.o succeeded
/usr/lib/gcc/i686-pc-linux-gnu/4.4.0/../../../crtn.o succeeded
检查是否调用正确的头文件
grep -B4 '^ /usr/include' dummy.log
正确应该有以下输出
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.4.0/include
/usr/lib/gcc/i686-pc-linux-gnu/4.4.0/include-fixed
/usr/include
检查搜索路径是否正确
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
正常会输出
SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
SEARCH_DIR("/usr/local/lib")
SEARCH_DIR("/lib")
SEARCH_DIR("/usr/lib");
64位系统会输出
SEARCH_DIR("/usr/x86_64-unknown-linux-gnu/lib64")
SEARCH_DIR("/usr/local/lib64")
SEARCH_DIR("/lib64")
SEARCH_DIR("/usr/lib64")
SEARCH_DIR("/usr/x86_64-unknown-linux-gnu/lib")
SEARCH_DIR("/usr/local/lib")
SEARCH_DIR("/lib")
SEARCH_DIR("/usr/lib");
检查libc调用
grep "/lib.*/libc.so.6 " dummy.log
正确输出
attempt to open /lib/libc.so.6 succeeded
检查动态链接库
grep found dummy.log
正确输出
found ld-linux.so.2 at /lib/ld-linux.so.2
删除测试文件
rm -v dummy.c a.out dummy.log
6.16. Berkeley DB-4.7.25
cd /sources/
tar -xvf tar/db-4.7.25.tar.gz
cd db-4.7.25/
patch -Np1 -i ../patch/db-4.7.25-upstream_fixes-1.patch
cd build_unix
../dist/configure --prefix=/usr --enable-compat185 --enable-cxx
make
make docdir=/usr/share/doc/db-4.7.25 install
修复文档的所有权
chown -Rv root:root /usr/share/doc/db-4.7.25
6.17. Sed-4.2
cd /sources/
rm -rf sed-4.2/
tar -xvf tar/sed-4.2.tar.bz2
cd sed-4.2/
./configure --prefix=/usr --bindir=/bin --enable-html
make
make check
make install
6.18. E2fsprogs-1.41.5
sed -i 's@/bin/rm@/tools&@' lib/blkid/test_probe.in
mkdir -v build
cd build
../configure --prefix=/usr --with-root-prefix="" \
--enable-elf-shlibs
make
make check
make install
make install-libs
chmod -v u+w /usr/lib/{libblkid,libcom_err,libe2p,libext2fs,libss,libuuid}.a
gunzip -v /usr/share/info/libext2fs.info.gz
install-info --dir-file=/usr/share/info/dir \
/usr/share/info/libext2fs.info
makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo
install -v -m644 doc/com_err.info /usr/share/info
install-info --dir-file=/usr/share/info/dir \
/usr/share/info/com_err.info
install -v -m644 -D ../doc/libblkid.txt \
/usr/share/doc/e2fsprogs-1.41.5/libblkid.txt
6.19. Coreutils-7.4
Intel硬件系统里面,当使用uname -p参数时,经常返回unknown,下面打个补丁。
case `uname -m` in
i?86 | x86_64) patch -Np1 -i ../patch/coreutils-7.4-uname-1.patch ;;
esac
POSIX标准需要coreutils程序识别多字节语言的字符边界效验。
patch -Np1 -i ../patch/coreutils-7.4-i18n-1.patch
准备编译
./configure --prefix=/usr \
--enable-no-install-program=kill,uptime
make
make NON_ROOT_USERNAME=nobody check-root
准备用nobody用户完成下面的测试,这里建立一个临时组,将nobody加入这个组,进行测试
echo "dummy:x:1000:nobody" >> /etc/group
修正权限
chown -Rv nobody config.log {gnulib-tests,lib,src}/.deps
用nobody用户运行测试程序
su-tools nobody -s /bin/bash -c "make RUN_EXPENSIVE_TESTS=yes check" || true
删除临时组
sed -i '/dummy/d' /etc/group
安装coreutils包
make install
将下面的命令移动到基于FHS的路径
mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin
LFS-Bootscripts包里的某些脚本,依赖于head,sleep和nice
/usr目录在系统启动初期可能不可用,这些二进制文件需要放在root分区
mv -v /usr/bin/{head,sleep,nice} /bin
6.20. Iana-Etc-2.30
cd /sources/
tar -xvf tar/iana-etc-2.30.tar.bz2
cd iana-etc-2.30/
make && make install
6.21. M4-1.4.13
./configure --prefix=/usr
make
make check
make install
6.22. Bison-2.4.1
tar -xvf tar/bison-2.4.1.tar.bz2
cd bison-2.4.1/
./configure --prefix=/usr
echo '#define YYENABLE_NLS 1' >> config.h
make
make check
make install
6.23. Ncurses-5.7
./configure --prefix=/usr --with-shared --without-debug --enable-widec
make
make install
mv -v /usr/lib/libncursesw.so.5* /lib
ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so
for lib in ncurses form panel menu ; do \
rm -vf /usr/lib/lib${lib}.so ; \
echo "INPUT(-l${lib}w)" >/usr/lib/lib${lib}.so ; \
ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a ; \
done
ln -sfv libncurses++w.a /usr/lib/libncurses++.a
rm -vf /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" >/usr/lib/libcursesw.so
ln -sfv libncurses.so /usr/lib/libcurses.so
ln -sfv libncursesw.a /usr/lib/libcursesw.a
ln -sfv libncurses.a /usr/lib/libcurses.a
mkdir -v /usr/share/doc/ncurses-5.7
cp -v -R doc/* /usr/share/doc/ncurses-5.7
Note
The instructions above don't create non-wide-character Ncurses libraries since no package installed by compiling from sources would link against them at runtime. If you must have such libraries because of some binary-only application, build them with the following commands:
make distclean
./configure --prefix=/usr --with-shared --without-normal \
--without-debug --without-cxx-binding
make sources libs
cp -av lib/lib*.so.5* /usr/lib
6.24. Procps-3.2.8
patch -Np1 -i ../patch/procps-3.2.8-watch_unicode-1.patch
make
make install
6.25. Grep-2.5.4
patch -Np1 -i ../patch/grep-2.5.4-debian_fixes-1.patch
./configure --prefix=/usr \
--bindir=/bin \
--without-included-regex
make
make check || true
make install
6.26. Readline-6.0
sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install
./configure --prefix=/usr --libdir=/lib
make SHLIB_LIBS=-lncurses
make install
mv -v /lib/lib{readline,history}.a /usr/lib
rm -v /lib/lib{readline,history}.so
ln -sfv ../../lib/libreadline.so.6 /usr/lib/libreadline.so
ln -sfv ../../lib/libhistory.so.6 /usr/lib/libhistory.so
mkdir -v /usr/share/doc/readline-6.0
install -v -m644 doc/*.{ps,pdf,html,dvi} \
/usr/share/doc/readline-6.0
6.27. Bash-4.0
patch -Np1 -i ../patch/bash-4.0-fixes-2.patch
./configure --prefix=/usr --bindir=/bin \
--htmldir=/usr/share/doc/bash-4.0 --without-bash-malloc \
--with-installed-readline
make
sed -i 's/LANG/LC_ALL/' tests/intl.tests
sed -i 's@tests@& </dev/tty@' tests/run-test
chown -Rv nobody ./
su-tools nobody -s /bin/bash -c "make tests"
make install
exec /bin/bash --login +h
6.28. Libtool-2.2.6a
./configure --prefix=/usr
make
make check
make install
6.29. Inetutils-1.6
patch -Np1 -i ../patch/inetutils-1.6-no_server_man_pages-1.patch
./configure --prefix=/usr --libexecdir=/usr/sbin \
--localstatedir=/var --disable-ifconfig \
--disable-logger --disable-syslogd --disable-whois \
--disable-servers
make
make install
mv -v /usr/bin/ping /bin
6.30. Perl-5.10.0
echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
patch -Np1 -i ../patch/perl-5.10.0-consolidated-1.patch
sed -i -e "s|BUILD_ZLIB\s*= True|BUILD_ZLIB = False|" \
-e "s|INCLUDE\s*= ./zlib-src|INCLUDE = /usr/include|" \
-e "s|LIB\s*= ./zlib-src|LIB = /usr/lib|" \
ext/Compress/Raw/Zlib/config.in
sh Configure -des -Dprefix=/usr \
-Dvendorprefix=/usr \
-Dman1dir=/usr/share/man/man1 \
-Dman3dir=/usr/share/man/man3 \
-Dpager="/usr/bin/less -isR"
make
make test
make install
6.31. Autoconf-2.63
./configure --prefix=/usr
make
make check
make install
6.32. Automake-1.11
./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.11
make
make check
要check好久好久:(
make install
6.33. Bzip2-1.0.5
patch -Np1 -i ../patch/bzip2-1.0.5-install_docs-1.patch
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
make -f Makefile-libbz2_so
make clean
make
make PREFIX=/usr install
cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat
第六章需要做的工作太多了,下面继续! |
|