LFS实战之一:环境准备

前言

linux开发人员常常是基于ubuntu、centos、debian等发行版环境开发应用程序,不会很深入的去了解linux环境本身是怎样组成的,这个系列文章通过对LFS(Linux From Scratch)项目的实践,展现了一个嵌入式linux发行版的完整构建过程。


一、主机环境要求

主机环境为wsl2 + debian12

1. 主机工具列表

bash-4.0
binutils-2.20
bzip2-1.0.5
coreutils-8.1
diffutils-3.0
findutils-4.4.0
gawk-3.1
GCC-4.4
glibc-2.11
grep-2.6
gzip-1.3
m4-1.4.16
make-3.81
ncurses5
patch-2.6
sed-4.2.1
sudo-1.7.4p4
tar-1.23
texinfo-4.13

2. 检查脚本

cat > version-check.sh << "EOF"
#!/bin/bash

# Simple script to list version numbers of critical development tools
set -e
bash --version | head -n1 | cut -d" " -f2-4
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
gcc --version | head -n1
ldd $(which ${SHELL}) | grep libc.so | cut -d ' ' -f 3 | ${SHELL} | head -n 1 \
| cut -d ' ' -f 1-10
grep --version | head -n1
gzip --version | head -n1
m4 --version | head -n1
make --version | head -n1
echo "#include <ncurses.h>" | gcc -E - > /dev/null
patch --version | head -n1
sed --version | head -n1
sudo -V | head -n1
tar --version | head -n1
makeinfo --version | head -n1

EOF

bash version-check.sh

3. 补齐安装包

apt install libncurses-dev
apt install texinfo

最终版本信息如下:
bash, version 5.2.15(1)-release
Binutils: (GNU Binutils for Debian) 2.40
bzip2, Version 1.0.8, 13-Jul-2019.
Coreutils: 9.1
diff (GNU diffutils) 3.8
find (GNU findutils) 4.9.0
GNU Awk 5.2.1, API 3.2, PMA Avon 8-g1, (GNU MPFR 4.2.0, GNU MP 6.2.1)
gcc (Debian 12.2.0-14) 12.2.0
GNU C Library (Debian GLIBC 2.36-9+deb12u4) stable release version 2.36.
grep (GNU grep) 3.8
gzip 1.12
m4 (GNU M4) 1.4.19
GNU Make 4.3
GNU patch 2.7.6
sed (GNU sed) 4.9
Sudo version 1.9.13p3
tar (GNU tar) 1.34
texi2any (GNU texinfo) 6.8

二、源码准备

1. 嵌入式linux发行版需要的软件包

binutils
busybox
bootscripts
gcc
gmp
iana-etc
kernel
mpc
mpfr
musl

2. 创建代码仓

root权限执行以下操作:

mkdir -p /opt/clfs
export CLFS=/opt/clfs
chmod 777 ${CLFS}
mkdir -v ${CLFS}/sources
mkdir -v ${CLFS}/archive

3. 下载软件包

wget http://ftp.gnu.org/gnu/binutils/binutils-2.27.tar.bz2 -P ${CLFS}/archive
wget http://busybox.net/downloads/busybox-1.24.2.tar.bz2 -P ${CLFS}/archive
wget https://github.com/cross-lfs/bootscripts-embedded/archive/master.tar.gz -P ${CLFS}/archive
wget http://gcc.gnu.org/pub/gcc/releases/gcc-6.2.0/gcc-6.2.0.tar.bz2 -P ${CLFS}/archive
wget http://ftp.gnu.org/gnu/gmp/gmp-6.1.1.tar.bz2 -P ${CLFS}/archive
wget http://sethwklein.net/iana-etc-2.30.tar.bz2 -P ${CLFS}/archive
wget http://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.22.tar.xz -P ${CLFS}/archive
wget http://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz -P ${CLFS}/archive
wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.bz2 -P ${CLFS}/archive
wget http://www.musl-libc.org/releases/musl-1.1.16.tar.gz -P ${CLFS}/archive
wget http://patches.clfs.org/embedded-dev/iana-etc-2.30-update-2.patch -P ${CLFS}/archive
wget http://downloads.sourceforge.net/libpng/zlib-1.2.8.tar.gz -P ${CLFS}/archive
wget http://matt.ucc.asn.au/dropbear/releases/dropbear-2013.60.tar.bz2 -P ${CLFS}/archive
wget http://www.red-bean.com/~bos/netplug/netplug-1.2.9.2.tar.bz2 -P ${CLFS}/archive
wget http://patches.clfs.org/embedded-dev/netplug-1.2.9.2-fixes-1.patch -P ${CLFS}/archive
wget https://hewlettpackard.github.io/wireless-tools/wireless_tools.29.tar.gz -P ${CLFS}/archive

三、 环境准备

1. 用户权限配置

export CLFS=/opt/clfs
groupadd clfs
useradd -s /bin/bash -g clfs -m -k /dev/null clfs
passwd clfs
chown -Rv clfs ${CLFS}
su - clfs # 至此由root用户切换为clfs用户

2. bash环境配置

cat > ~/.bash_profile << "EOF"
exec env -i HOME=${HOME} TERM=${TERM} PS1='\u:\w\$ ' /bin/bash
EOF
cat > ~/.bashrc << "EOF"
set +h
umask 022
CLFS=/opt/clfs
LC_ALL=POSIX
PATH=${CLFS}/cross-tools/bin:/bin:/usr/bin
export CLFS LC_ALL PATH
EOF
source ~/.bash_profile

总结

本章罗列了制作精简的嵌入式linux发行版的主机环境需要的软件包和发行版本身需要的软件包,同时对编译前的环境做了配置。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值