重走LFS之路:(一) 环境准备

简介:

重走LFS之路:(一) 环境准备

自从大学二年级的寒假没日没夜地用了整整两个月的时间编译了LFS之后,就再也没做过。这两天在Linux中国的微信公众号上看到LFS都升级到7.7了,故而觉得是时候重新再编译一遍的时候了。

诚然LFS是Linux学习和深入理解的终南捷径,每个真心希望了解Linux的人都建议去做一遍LFS,因为每做一次就会获得新的知识,对Linux有更多更深入的理解。

(题图来自: techradar.com)

貌似LFS官网(http://www.linuxfromscratch.org)不再提供LiveCD了,好吧好吧,那我就从虚拟机装个宿主系统,依然是Debian。说句题外话,对于自己用得惯的OS,真心应该最小安装到虚拟机一份,再有需要的时候,直接复制一下改个名,省心又省力。

此时我把Debian更新到了最新,并且为了使用显卡驱动让它能够在我的显示器上全屏显示,就用tasksel装上了Debian desktop environment。

1-Tasksel-DebianDesktopEnv

1-Tasksel-DebianDesktopEnv

我在自己的Home目录中新建了一个目录lfs,用于整个工程的存储。这时候我在~/lfs/中新建了一个checkscript目录,用于存储事前的环境检查脚本。

我们来编写第一个检查脚本,这个脚本会检查各个需要的工具及内核版本号,看看是否符合lfs7.7的列表要求,如果没有,会报not found。


  
  
  1. cd ~/lfs/checkscript
  2. vi check_env.sh

 


  
  
  1. #/bin/sh
  2. export LC_ALL=C
  3. bash version | head -n1 | cut -d -f2-4
  4. echo “/bin/sh -> `readlink -f /bin/sh`
  5. echo -n Binutils: “; ld version | head -n1 | cut -d -f3-
  6. bison version | head -n1
  7. if [ -h /usr/bin/yacc ]; then
  8. echo “/usr/bin/yacc -> `readlink -f /usr/bin/yacc`”;
  9. elif [ -x /usr/bin/yacc ]; then
  10. echo yacc is `/usr/bin/yacc –version | head -n1`
  11. else
  12. echo yacc not found
  13. fi
  14. bzip2 version 2>&1 < /dev/null | head -n1 | cut -d -f1,6-
  15. echo -n Coreutils: “; chown version | head -n1 | cut -d”)” -f2
  16. diff version | head -n1
  17. find version | head -n1
  18. gawk version | head -n1
  19. if [ -h /usr/bin/awk ]; then
  20. echo “/usr/bin/awk -> `readlink -f /usr/bin/awk`”;
  21. elif [ -x /usr/bin/awk ]; then
  22. echo yacc is `/usr/bin/awk –version | head -n1`
  23. else
  24. echo awk not found
  25. fi
  26. gcc version | head -n1
  27. g++ version | head -n1
  28. ldd version | head -n1 | cut -d -f2- # glibc version
  29. grep version | head -n1
  30. gzip version | head -n1
  31. cat /proc/version
  32. m4 version | head -n1
  33. make version | head -n1
  34. patch version | head -n1
  35. echo Perl `perl -V:version`
  36. sed version | head -n1
  37. tar version | head -n1
  38. makeinfo version | head -n1
  39. xz version | head -n1
  40. echo main(){}’ > dummy.c && g++ -o dummy dummy.c
  41. if [ -x dummy ]; then
  42. echo g++ compilation OK”;
  43. else
  44. echo g++ compilation failed”;
  45. fi
  46. rm -f dummy.c dummy

2-CheckScript-check_env.sh

2-CheckScript-check_env.sh

此时的脚本是不能直接执行的,需要加执行权限,也就是x权限


  
  
  1. chmod +x check_env.sh

现在可以执行脚本了

3-CheckScript-check_env.run

3-CheckScript-check_env.run

从检查结果中可以看到,我的Debian太干净了,缺了好几样东西,bison gawk g++,所以我用aptitude装上他们就好了。

4-CheckScript-install

4-CheckScript-install

5-CheckScript-check_env-OK

5-CheckScript-check_env-OK

此时环境检查没有报错信息了,需要的工具也已经正确显示了版本号。

下面检查需要用到的库,一共有三个,gmp, mpfr和mpc


  
  
  1. cd ~/lfs/checkscript
  2. vi check_lib.sh

 


  
  
  1. #!/bin/bash
  2. for lib in lib{gmp,mpfr,mpc}.la; do
  3. echo $lib: $(
  4. if find /usr/lib* -name $lib | grep -q $lib; then
  5. :;
  6. else
  7. echo not;
  8. fi
  9. ) found
  10. done
  11. unset lib

6-CheckScript-check_lib.sh

6-CheckScript-check_lib.sh

7-CheckScript-check_lib.run

7-CheckScript-check_lib.run

从检查结果来看,三个库目前都不具备,不过没关系,现在还用不到这三个货,先把脚本写好。

原文发布时间:2015-04-02

本文来自云栖合作伙伴“linux中国”

目录
相关文章
|
19天前
|
Java 编译器 Maven
【颠覆你的认知!】当Quarkus邂逅GraalVM本机镜像,应用启动竟快到飞起——背后的技术秘密等你揭秘!
Quarkus框架因轻量级与高性能而在Java开发社区广受关注。结合GraalVM使用能显著提升应用启动速度与运行效率,这得益于GraalVM的本机镜像支持。本文将介绍如何利用Quarkus和GraalVM构建高效应用,并提供示例代码演示具体步骤。首先需安装GraalVM环境并配置Maven支持构建本机镜像。接着创建一个简单的RESTful服务端点作为示例,通过命令行编译生成本机可执行文件并运行。这种方式能够大幅提升应用性能,但需注意构建时间和部分Java特性兼容性问题。
16 1
|
1月前
|
Ubuntu 编译器 C语言
Ubuntu 源码编译指定版本 make:神秘代码背后的激情冒险,等你来战!
【9月更文挑战第8天】在Ubuntu中,编译指定版本的源码`make`是一项挑战但也极具价值的任务。它允许我们根据特定需求定制软件,提升性能与功能适配。首先需安装必要工具包如GCC等;接着下载所需源码并阅读相关文档以了解编译要求。通过运行`./configure`、`make`及`sudo make install`命令完成编译安装流程。过程中可能遇到依赖项缺失或编译选项设置不当等问题,需根据错误提示逐一解决。对于大型项目,可利用多核编译加快速度。掌握这一技能有助于更好地探索开源世界。
30 2
|
5月前
|
Linux 程序员 开发工具
振南技术干货集:研发版本乱到“妈不认”? Git!(1)
振南技术干货集:研发版本乱到“妈不认”? Git!(1)
|
5月前
|
程序员 Linux 开发工具
振南技术干货集:研发版本乱到“妈不认”? Git!(5)
振南技术干货集:研发版本乱到“妈不认”? Git!(5)
|
5月前
|
存储 安全 Linux
振南技术干货集:研发版本乱到“妈不认”? Git!(4)
振南技术干货集:研发版本乱到“妈不认”? Git!(4)
振南技术干货集:研发版本乱到“妈不认”? Git!(4)
|
5月前
|
Linux 网络安全 开发工具
振南技术干货集:研发版本乱到“妈不认”? Git!(3)
振南技术干货集:研发版本乱到“妈不认”? Git!(3)
|
5月前
|
Shell Linux 开发工具
振南技术干货集:研发版本乱到“妈不认”? Git!(2)
振南技术干货集:研发版本乱到“妈不认”? Git!(2)
|
监控 网络协议 Java
六年研发情绪猿,熬夜总结Linux 命令大全,这篇就够(记得收藏) 上
六年研发情绪猿,熬夜总结Linux 命令大全,这篇就够(记得收藏) 上
140 0
|
Linux vr&ar 开发工具
六年研发情绪猿,熬夜总结Linux 命令大全,这篇就够(记得收藏) 下
六年研发情绪猿,熬夜总结Linux 命令大全,这篇就够(记得收藏) 下
168 0
|
存储 缓存 监控
六年研发情绪猿,熬夜总结Linux 命令大全,这篇就够(记得收藏) 中
六年研发情绪猿,熬夜总结Linux 命令大全,这篇就够(记得收藏) 中
153 0