如果在使用本书的过程中有疑问或碰到问题,可以先去看下 FAQ 页面http://www.linuxfromscratch.org/faq/#generalfaq。那里已经解决了很多经常遇到的问题。如果你的问题在那里找不到答案,可以先尝试找出问题的原因。下面页面里的提示可以提供一些帮你定位问题的帮助:http://www.linuxfromscratch.org/hints/downloads/files/errors.txt。
如果在 FAQ 里找不到你遇到的问题,还可以在这个邮件列表里搜索一下:http://www.linuxfromscratch.org/search.html。
我们还有一个很棒的 LFS 社区,大家都很乐意通过邮件列表和 IRC 提供协助(参看本书的 第 1.4 节 「资源」)。不过,我们每天收到的支持问题中有很多其实可以通过查看 FAQ 和搜索邮件列表轻松解决。所以为了让我们能最大可能地提供更好的协助,希望你碰到问题能自己先研究一下。这样可以让我们有精力去关注更罕见问题。如果你自己搜索不到解决方式,请在你的帮助请求里收集所有相关信息(下面提到的)。
除了对遇到的问题的简短描述外,帮助请求里还需要包含的以下的关键信息:
所用手册的版本(当前版本为 9.0-systemd)
用来构建 LFS 的宿主机器的 Linux 发行版以及版本
本手册 宿主系统需求 中脚本的所有输出信息
出现问题的软件包或本手册的章节
精确的错误信息或表现形式
注明你是否已经脱离了本书的内容
脱离本手册的内容并不意味着我们就一定不会帮你。毕竟,LFS 还是属于个人爱好。坦率地告知别人对已验证的流程作出的任何改动,有助于我们评估和找到你问题的可能原因。
如果在运行 configure
脚本时遇到问题,查看一下 config.log
文件。这个文件中可能会包含
configure
脚本运行时没有输出到屏幕上的错误信息。想寻求帮助的话请包含相关行。
屏幕上的显示输出和各个文件的内容都有助于定位编译发生问题的原因。configure 和 make 命令的输出信息都有用。然而通常并不需要在寻求帮助时将这些信息一股脑的贴出来,但是一定要包含足够的相关信息。下面的例子就是在执行 make 命令出错后应该贴出来的输出信息:
gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\"
-DLIBDIR=\"/mnt/lfs/usr/lib\"
-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
-g -O2 -c getopt1.c
gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
expand.o file.o function.o getopt.o implicit.o job.o main.o
misc.o read.o remake.o rule.o signame.o variable.o vpath.o
default.o remote-stub.o version.o opt1.o
-lutil job.o: In function `load_too_high':
/lfs/tmp/make-3.79.1/job.c:1565: undefined reference
to `getloadavg'
collect2: ld returned 1 exit status
make[2]: *** [make] Error 1
make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
make: *** [all-recursive-am] Error 2
在此例子中,很多人可能仅仅就贴出最后的一部分:
make [2]: *** [make] Error 1
这样的信息并不能用于诊断问题,实际上它仅仅是告知别人出了问题,却没有指出到底是哪里出现问题。这也就是为什么要提供更加完整的信息。比如在上面的例子中,就告诉别人所执行的命令及相应的错误信息。
这个链接 http://catb.org/~esr/faqs/smart-questions.html 中的文章告知人们如何在互联网上寻求帮助,可以去看一下,且遵循其中的提问原则进行提问,可以提高获得帮助的概率(亦让别人对你伸出援手更加方便)。