测试环节

Sed
[ "`tail -1 $SRC/build.log`" = '6-gcc' ] &&
R=/root/sed-4.1.5/ &&
tar -xf sed-4.1.5.tar.gz &&
cd sed-4.1.5 &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-largefile --enable-i18n --enable-regex-tests --disable-html --disable-nls --without-included-regex --without-libiconv-prefix --without-included-gettext --without-libintl-prefix &&
make &&
make check &&
make install &&
make install DESTDIR=$R &&
cd $SRC &&
rm */ &&
echo '7-sed' >> $SRC/build.log &&
sync &&E2fsprogs

[提示]“–disable-htree”和”–disable-debugfs”选项都会导致许多测试错误,”–disable-swapfs”会导致lib/ext2fs测试由于找不到”tst_types”而失败,此外由于lib/ext2fs测试总是由于”Failed to allocate scratch memory!”失败,原因不明,所以这里使用sed跳过这个测试。CFLAGS和LDFLAGS必须在configure选项上设置。[依赖提示]UUID被XFS依赖,blkid,uuid 被mount/umount依赖。

R=/root/e2fsprogs-1.40.6/ && mkdir $R/{lib,etc} &&
tar -xf e2fsprogs-1.40.6.tar.gz && cd e2fsprogs-1.40.6 &&
sed -i 's:/bin/rm:rm:g' lib/blkid/test_probe.in &&
sed -i 's/^check::/cancelled-check::/' lib/ext2fs/Makefile.in &&
sed -i 's|root_sbindir=.*|root_sbindir=/usr/bin|' configure{.in,} &&
mkdir build && cd build &&
../configure --prefix=/usr --enable-elf-shlibs --disable-profile --disable-swapfs --enable-uuidd --disable-nls --disable-rpath --with-ccopts="$CFLAGS" --with-ldopts="$LDFLAGS" --with-root-prefix=/usr --without-libiconv-prefix --without-included-gettext --without-libintl-prefix &&
make && make check &&
make install install-libs && make install install-libs DESTDIR=$R &&
cp /etc/blkid.tab $R/etc/ && rm {,$R}/etc/{init.d,*.old} {,$R}/usr/etc &&
cp   /usr/lib/lib{blkid,uuid}.so.1   /lib &&
cp $R/usr/lib/lib{blkid,uuid}.so.1 $R/lib &&
cd $SRC && rm */ &&
echo '8-e2fsprogs' >> $SRC/build.log && sync &&Coreutils

运行 make check 的非特权用户要求至少位于两个不同的组中,因此这里将 pgsql 用户临时添加到 dummy 组内。”RUN_VERY_EXPENSIVE_TESTS=yes”用于运行更多的测试项目。[说明]因为test-getaddrinfo测试总是由于缺乏DNS支持而失败,需要跳过它。更多此版本的怪脾气,请看这里。[说明]由于Findutils包内的 xargs 程序将 echo 程序硬编码为”/bin/echo”,且不能在源代码中将其修改为”echo”(会导致测试失败,原因不明),另一方面echo也是bash的内置命令,所以就将它也安装在 /bin 目录下。

R=/root/coreutils-6.10/ && mkdir $R/bin/ &&
tar -xf coreutils-6.10.tar.gz && cd coreutils-6.10 &&
patch $SRC/coreutils-6.10-i18n-1.patch &&
chmod +x tests/sort/sort-mb-tests &&
sed -i '/(setuid_root_mode)/s/(installed_su)/&;/' src/Makefile.in &&
echo 'int main (void) { return 0; }' > gnulib-tests/test-getaddrinfo.c &&
sed -i 's|HOME|& /dev/shm|' tests/other-fs-tmpdir &&
sed -i 's:/bin/rmdir:rmdir:g' lib/rmdir.c &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-option-checking --disable-acl --disable-assert --disable-rpath --enable-largefile --disable-nls --enable-install-program="arch,hostname,su" --without-libiconv-prefix --without-included-regex --without-libintl-prefix &&
make && make check-root NON_ROOT_USERNAME=pgsql &&
echo "dummy::1689:pgsql" >> /etc/group && chown pgsql gnulib-tests/.deps &&
su -c'make check RUN_EXPENSIVE_TESTS=yes RUN_VERY_EXPENSIVE_TESTS=yes' -s/bin/bash pgsql &&
sed -i '/dummy/d' /etc/group &&
make install install-root            && cp   /usr/bin/{echo,false,mktemp,sync}   /bin/ &&
make install install-root DESTDIR=$R && cp $R/usr/bin/{echo,false,mktemp,sync} $R/bin/ &&
cd $SRC && rm */ &&
echo '9-coreutils' >> $SRC/build.log && sync &&M4

[依赖提示]至少被Bison/Autoconf/Automake/Flex依赖

R=/root/m4-1.4.10/ &&
tar -xf m4-1.4.10.tar.bz2 && cd m4-1.4.10 &&
./configure --prefix=/usr --sbindir=/usr/bin --disable-changeword --without-included-regex &&
make && make check &&
make install && make install DESTDIR=$R &&
cd $SRC && rm */ &&
echo '10-m4' >> $SRC/build.log && sync &&Bison

[依赖提示]至少被Bash依赖

R=/root/bison-2.3/ &&
tar -xf bison-2.3.tar.bz2 && cd bison-2.3 &&
./configure --prefix=/usr --sbindir=/usr/bin --disable-gcc-warnings --enable-yacc --disable-nls --disable-rpath --without-libiconv-prefix --without-libintl-prefix &&
make && make check &&
make install && make install DESTDIR=$R &&
cd $SRC && rm */ &&
echo '11-bison' >> $SRC/build.log && sync &&Libtool

[依赖提示]至少XFS的安装依赖于它。

R=/root/libtool-1.5.26/ &&
tar -xf libtool-1.5.26.tar.gz && cd libtool-1.5.26 &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-ltdl-install --enable-shared --with-pic &&
make && make check &&
make install && make install DESTDIR=$R &&
cd $SRC && rm */ &&
echo '12-libtool' >> $SRC/build.log && sync &&Ncurses

这个包的配置选项简直多如牛毛,这里没有(也没必要)涵盖全部选项。更多安装信息请查看源码树目录下的 INSTALL 文件(所有选项皆有描述,不需要查看 configure 的内容)。Ncurses 的测试套件与大多数包不同,不能用简单的非交互式”make check”来测试,因为 Ncurses 牵涉到视觉效果,所以必须是交互式的测试,更多有关如何测试的细节,请查看源码树下的 test/README 文件。

更多官方补丁请查看:ftp://invisible-island.net/ncurses/5.6/。[提示]–enable/disable-database都将导致编译失败,不能使用。–disable-ext-funcs –disable-tparm-varargs 将导致 Procps 无法编译。如果你不想安装terminfo数据库可以使用”–disable-database –without-terminfo-dirs”,如果你不想安装实用程序可以使用”–without-progs”。可以使用”make install.libs”仅安装共享库。

R=/root/ncurses-5.6/ && mkdir $R/lib/ &&
tar -xf ncurses-5.6.tar.gz && cd ncurses-5.6 &&
bunzip2 -kf ../ncurses-5.6-20071201-patch.sh.bz2 &&
chmod +x ../ncurses-5.6-20071201-patch.sh &&
../ncurses-5.6-20071201-patch.sh    &&
./configure --prefix=/usr --sbindir=/usr/bin --without-cxx --without-cxx-binding --with-progs --without-curses-h --disable-mixed-case --without-libtool --with-shared --without-normal --without-debug --without-profile --without-termlib --without-ticlib --without-gpm --without-dlsym --without-sysmouse --disable-rpath --enable-overwrite --with-database=misc/terminfo.src --without-hashed-db --without-fallbacks --with-terminfo-dirs=/usr/share/terminfo --with-default-terminfo-dir=/usr/share/terminfo --enable-big-core --enable-big-strings --disable-termcap --without-termpath --disable-getcap --disable-getcap-cache --disable-home-terminfo --disable-root-environ --enable-symlinks --disable-broken_linker --disable-bsdpad --enable-widec --enable-lp64 --enable-largefile --enable-tparm-varargs --without-caps --with-ospeed=int --without-rcs-ids --enable-ext-funcs --enable-const --enable-no-padding --enable-signed-char --enable-sigwinch --enable-tcap-names --without-develop --disable-hard-tabs --disable-xmc-glitch --enable-assumed-color --enable-hashmap --disable-colorfgbg --disable-ext-colors --disable-ext-mouse --disable-reentrant --disable-safe-sprintf --disable-wgetch-events --enable-echo --enable-warnings --disable-assertions --without-dmalloc --without-dbmalloc --without-valgrind --enable-leaks --disable-expanded --enable-macros --without-trace &&
make install            && cp   /usr/lib/libncursesw.so.5   /lib/ &&
make install DESTDIR=$R && cp $R/usr/lib/libncursesw.so.5 $R/lib/ &&
cd $SRC && rm */ &&
echo '13-ncurses' >> $SRC/build.log && sync &&Procps

Procps 的测试套件与 Ncurses 类似,由于牵涉到视觉效果,因此也是交互式测试,具体细节请查看 README 文件。

R=/root/procps-3.2.7/ &&
tar -xf procps-3.2.7.tar.gz && cd procps-3.2.7 &&
sed -i 's:<curses.h>:<ncurses.h>:' {dummy,top}.c &&
sed -r -i -e'/CURSES/s/-lncurses/-lncursesw/' -e's|DESTDIR\)/s?bin/|DESTDIR)/usr/bin/|' -e's|DESTDIR\)(/usr)?/\$\(lib64\)/|DESTDIR)/usr/lib/|' Makefile &&
make install CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" &&
make install DESTDIR=$R &&
cd $SRC && rm */ &&
echo '14-procps' >> $SRC/build.log && sync &&Perl

Perl的测试很奇怪,有时候第一次运行失败,再运行一次却能成功。

R=/root/perl-5.8.8/ &&
tar -xf perl-5.8.8.tar.bz2 && cd perl-5.8.8 &&
sed -i 's/command /command[ -]/' makedepend.SH &&
./configure.gnu --prefix=/usr -Dpager="/usr/bin/less -isR" &&
make && ( make test || make test ) &&
make install && make install DESTDIR=$R &&
rm /etc/{protocols,services} &&
cd $SRC && rm */ &&
echo '15-perl' >> $SRC/build.log && sync &&Readline

由于只需要共享库,因此只编译和安装共享库(包括头文件)。”bash_cv_func_ctype_nonascii=yes”用于修正当en_US.ISO8859-1这个locale不存在时会出现的问题,具体细节参见这里。

R=/root/readline-5.2/ && mkdir $R/{etc,lib} &&
tar -xf readline-5.2.tar.gz && cd readline-5.2 &&
patch $SRC/readline-5.2-fixes-5.patch &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-multibyte --enable-shared --disable-static --with-curses --without-purify bash_cv_func_ctype_nonascii=yes &&
make shared SHLIB_LIBS=-lncursesw SHOBJ_CFLAGS="$CFLAGS -fpic" SHOBJ_LDFLAGS="$LDFLAGS -shared" &&
make install-shared            && cp   /usr/lib/lib{history,readline}.so.5   /lib/ &&
make install-shared DESTDIR=$R && cp $R/usr/lib/lib{history,readline}.so.5 $R/lib/ &&
echo 'set horizontal-scroll-mode Off
set meta-flag On
set input-meta On
set convert-meta Off
set output-meta On
set bell-style none
"\eOd": backward-word
"\eOc": forward-word
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert' | tee {,$R}/etc/inputrc &&
cd $SRC && rm */ &&
echo '16-readline' >> $SRC/build.log && sync &&Zlib

由于只需要共享库,因此只编译和安装共享库(包括头文件)。[提示]configure脚本只传递了CFLAGS而未传递LDFLAGS,因此需要在配置完毕后(不能提前修改Makefile.in,configure会覆盖掉你的修改)再修改Makefile中的LDSHARED(作用于共享库)和LDFLAGS(作用于二进制文件)。

R=/root/zlib-1.2.3/ && mkdir $R/lib/ &&
tar -xf zlib-1.2.3.tar.bz2 && cd zlib-1.2.3 &&
sed -i 's/${CFLAGS-"-fPIC -O3"}/"${CFLAGS-"-O3"} -fPIC"/' configure &&
./configure --prefix=/usr --shared &&
sed -i -e"s|^LDSHARED=.*|& $LDFLAGS|" -e"s|^LDFLAGS=.*|& $LDFLAGS|" Makefile &&
make && make check &&
make install                && cp   /usr/lib/libz.so.1   /lib/ &&
make install prefix=$R/usr/ && cp $R/usr/lib/libz.so.1 $R/lib/ &&
cd $SRC && rm */ &&
echo '17-zlib' >> $SRC/build.log && sync &&Flex

由于没有安装C++编译器的原因,将会有6个与C++相关的测试项目失败,不必紧张。[依赖提示]仅在安装IPRoute2的tc工具和安装Bc时需要它。

R=/root/flex-2.5.35/ &&
tar -xf flex-2.5.35.tar.bz2 && cd flex-2.5.35 &&
./configure --prefix=/usr --sbindir=/usr/bin --disable-nls --disable-rpath --without-libiconv-prefix --without-libintl-prefix &&
make && ( make -k check | fgrep FAILED > $SRC/build_flex.log ; make install ) &&
make install prefix=$R/usr/ sbindir=$R/usr/bin &&
cd $SRC && rm */ &&
echo '18-flex' >> $SRC/build.log && sync &&Autoconf 与 Automake

以root身份运行automake-1.10.1的instsh2.test测试总是会失败,所以需要使用一个sed跳过它。[提示]如果你忍受不了测试的漫长可以去掉注释。[依赖提示]至少被PHP依赖。

tar -xf autoconf-2.61.tar.bz2 && tar -xf automake-1.10.1.tar.bz2 &&
sed -i 's|#! /bin/cat|#!/usr/bin/cat|' autoconf-2.61/lib/autoconf/specific.m4 &&
# sed -i 's|$(TESTSUITE_GENERATED_AT)|$(srcdir)/acprograms.at|g' autoconf-2.61/tests/Makefile.in &&
# sed -i 's|$(TESTS)|instsh2.test|g' automake-1.10.1/tests/Makefile.in &&
sed -i '/instsh2.test/d' automake-1.10.1/tests/Makefile.in &&
cd $SRC/autoconf-2.61 && ./configure --prefix=/usr --sbindir=/usr/bin  && make && make install &&
cd $SRC/automake-1.10.1 && ./configure --prefix=/usr --sbindir=/usr/bin && make && make check && make install &&
cd $SRC/autoconf-2.61 && make check && make install DESTDIR=/root/autoconf-2.61/ &&
cd $SRC/automake-1.10.1 && make install DESTDIR=/root/automake-1.10.1/ &&
cd $SRC && rm */ &&
echo '19-autoconf-automake' >> $SRC/build.log && sync
# [ "`tail -1 $SRC/build.log`" != '19-autoconf-automake' ] && ( test -d $SRC/automake-1.10.1 ) &&
# ( cd $SRC/autoconf-2.61 ; make uninstall ; cd $SRC/automake-1.10.1 ; make uninstall ; cd $SRC ; rm */ ; cd $SRC ; sync )Bash

Bash 的测试套件不像其他软件包那样遇到错误就停下来并返回非零的错误代码,而是始终返回表示成功的零,因此不能在脚本中根据 make tests 命令的返回状态判断测试的成败,你必须用眼睛亲自检查 make tests 的输出结果。

另一方面由于 Bash 的测试套件如同 GCC 一样,错误总是不可避免的,因此如果错误不是特别多就无需太在意(可以在 http://www.linuxfromscratch.org/lfs/build-logs/ 找到参照)。更多有关安装的详细信息请查看源码树下的 INSTALL config-top.h 以及 configure –help 本身。

[ "`tail -1 $SRC/build.log`" = '19-autoconf-automake' ] &&
R=/root/bash-3.2/ && mkdir $R/{bin,etc,root,usr/bin} &&
tar -xf bash-3.2.tar.gz && cd bash-3.2 &&
patch $SRC/bash-3.2-fixes-7.patch &&
echo '#define SYS_BASHRC "/etc/bashrc"
#define SYS_BASH_LOGOUT "/etc/bash_logout"
#define NON_INTERACTIVE_LOGIN_SHELLS
#define SSH_SOURCE_BASHRC' >> config-top.h &&
sed -i 's/LANG/LC_ALL/' tests/intl.tests &&
sed -i 's|test.tests|& </dev/tty|' tests/run-test &&
sed -i -e's/-lncurses/-lncursesw/g' -e's/-lcurses/-lncursesw/g' aclocal.m4 configure support/shobj-conf &&
sed -i 's|#! /bin/cat|#!/usr/bin/cat|' configure &&
sed -r -i 's:/bin/(true|date|cat|echo):\1:g' tests/{{array,redir,rsh}.tests,varenv.sh} &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-multibyte --disable-profiling --disable-static-link --enable-largefile --disable-nls --disable-rpath --without-bash-malloc --without-gnu-malloc --with-curses --without-termcap --disable-install-termcap --with-installed-readline --without-libiconv-prefix --without-included-gettext --without-libintl-prefix &&
make && chown -R pgsql . && su -c'make tests HOME=/data' -s/bin/bash pgsql 2>&1 | tee $SRC/build_bash.log &&
cp bash   /bin/ && cp bash   /usr/bin/ &&
cp bash $R/bin/ && cp bash $R/usr/bin/ &&
touch $R/etc/profile $R/root/.bash_history &&
cd $SRC && rm */ &&
echo '20-bash' >> $SRC/build.log && sync &&
# exec /bin/bash --login +hBzip2

Bzip2 的两个 Makefile 文件写的相当简洁易懂,建议直接阅读以获取安装信息。

[ "`tail -1 $SRC/build.log`" = '20-bash' ] &&
R=/root/bzip2-1.0.4/ && mkdir $R/usr/bin &&
tar -xf bzip2-1.0.4.tar.gz && cd bzip2-1.0.4 &&
sed -i 's:/bin/rm:rm:g' bzdiff &&
make test CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64" LDFLAGS="$LDFLAGS" &&
cp bzip2   /usr/bin/ && ln -sf bzip2   /usr/bin/bunzip2 &&
cp bzip2 $R/usr/bin/ && ln -sf bzip2 $R/usr/bin/bunzip2 &&
cd $SRC && rm */ &&
echo '21-bzip2' >> $SRC/build.log && sync &&Diffutils
R=/root/diffutils-2.8.1/ &&
tar -xf diffutils-2.8.1.tar.gz && cd diffutils-2.8.1 &&
patch $SRC/diffutils-2.8.1-i18n-1.patch &&
touch man/diff.1 &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-largefile --disable-rpath --disable-nls --without-included-regex --without-libiconv-prefix --without-libintl-prefix &&
make && make check &&
make install && make install DESTDIR=$R &&
cd $SRC && rm */ &&
echo '22-diffutils' >> $SRC/build.log && sync &&Findutils

[提醒] xargs 程序将 echo 程序硬编码为”/bin/echo”,且不能在源代码中将其修改为”echo”(会导致测试失败,原因不明)。

R=/root/findutils-4.2.33/ &&
tar -xf findutils-4.2.33.tar.gz && cd findutils-4.2.33 &&
# sed -i 's:/bin/echo:echo:g' xargs/testsuite/xargs.sysv/{s30-t,empty_def-t}.xe xargs/xargs.c &&
./configure --prefix=/usr --sbindir=/usr/bin --localstatedir=/var/locate --disable-id-cache --disable-debug --disable-leaf-optimisation --disable-d_type-optimization --enable-largefile --disable-nls --disable-rpath --without-included-regex --without-libiconv-prefix --without-libintl-prefix &&
make && make check &&
make install && make install DESTDIR=$R &&
cd $SRC && rm */ &&
echo '23-findutils' >> $SRC/build.log && sync &&Gawk
R=/root/gawk-3.1.6/ &&
tar -xf gawk-3.1.6.tar.bz2 && cd gawk-3.1.6 &&
./configure --prefix=/usr --sbindir=/usr/bin --disable-portals --enable-lint --enable-switch --enable-directories-fatal --enable-largefile --disable-nls --disable-rpath --without-whiny-user-strftime --without-libiconv-prefix --without-libintl-prefix &&
make && make check &&
make install && make install DESTDIR=$R &&
cd $SRC && rm */ &&
echo '24-gawk' >> $SRC/build.log && sync &&PCRE

详细的安装信息位于源码树下的 README 文件中(不需要查看 INSTALL 了),需要仔细阅读。此外,pcrebuild手册页还有更详细的说明。

R=/root/pcre-7.6/ && mkdir $R/lib/ &&
tar -xf pcre-7.6.tar.bz2 && cd pcre-7.6 &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-shared=yes --enable-static=no --disable-cpp --disable-rebuild-chartables --enable-utf8 --enable-unicode-properties --enable-newline-is-anycrlf --enable-bsr-anycrlf --disable-ebcdic --enable-stack-for-recursion --disable-pcregrep-libz --disable-pcregrep-libbz2 --disable-pcretest-libreadline --with-pic --with-posix-malloc-threshold=15 --with-link-size=2 --with-match-limit=100000 --with-match-limit-recursion=100000 &&
make && make check &&
make install            && cp   /usr/lib/libpcre.so.0   /lib/ &&
make install DESTDIR=$R && cp $R/usr/lib/libpcre.so.0 $R/lib/ &&
cd $SRC && rm */ &&
echo '25-pcre' >> $SRC/build.log && sync &&Grep

由于grep-2.5.3的文档依赖于Texinfo,所以为了编译成功,需要用一个sed去掉doc子目录。foad1.sh 和 fmbtest.sh 测试是意料中的失败(不过我这里却能通过)。

R=/root/grep-2.5.3/ &&
tar -xf grep-2.5.3.tar.bz2 && cd grep-2.5.3 &&
patch $SRC/grep-2.5.3-debian_fixes-1.patch &&
patch $SRC/grep-2.5.3-upstream_fixes-1.patch &&
sed -i '/^SUBDIRS/s/doc//' Makefile.in &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-perl-regexp --enable-largefile --disable-nls --without-libiconv-prefix --without-included-gettext --without-included-regex --without-included-getopt &&
make && make check &&
make install && make install DESTDIR=$R &&
cd $SRC && rm */ &&
echo '26-grep' >> $SRC/build.log && sync &&Gzip
R=/root/gzip-1.3.12/ &&
tar -xf gzip-1.3.12.tar.gz && cd gzip-1.3.12 &&
sed -i 's/futimens/gl_&/' gzip.c lib/utimens.{c,h} &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-largefile &&
make && make check &&
make install && make install DESTDIR=$R &&
cd $SRC && rm */ &&
echo '27-gzip' >> $SRC/build.log && sync &&IPRoute2

这个软件包不是通过 configure 脚本而是通过直接修改 Makefile 文件进行配置的,具体细节请阅读 README 文件。[提示]由于 arpd 对这个系统没有价值而且还依赖于 Berkeley DB ,所以这里用一个 sed 去掉它。如果你不需要依赖于Flex的tc可以去掉注释。

R=/root/iproute2-2.6.24-rc7/ && mkdir $R/bin &&
tar -xf iproute2-2.6.24-rc7.tar.bz2 && cd iproute2-2.6.24-rc7 &&
sed -i -e's|^SBINDIR=.*|SBINDIR=/usr/bin|' -e's|$(KERNEL_INCLUDE)|/usr/include|' Makefile &&
# sed -i '/^SUBDIRS/s| tc | |g' Makefile &&
sed -i '/^TARGETS/s| arpd | |g' misc/Makefile &&
make CCOPTS="-D_GNU_SOURCE $CFLAGS" LDFLAGS="$LDFLAGS" &&
make install            &&
make install DESTDIR=$R &&
cd $SRC && rm */ &&
sed -i 's|/www/bin/ip|/usr/bin/ip|' /bin/tmpinit &&
echo '28-iproute2' >> $SRC/build.log && sync &&Make

[提示]不能明确指定 –enable/disable-case-insensitive-file-system ,否则无法编译成功。


相关内容

    暂无相关文章