BuildRoot安装问题
在vmware中CentOS-6.0中安装buildroot环境。
一.空间准备
为buildroot准备了40G的空间,最后剩下6G,内核编译出来后剩下6G,准备的还是偏少一点。
在vmware中挂载新的分区,配置如下:
fdisk -l
mkfs -t ext4 /dev/sdb1 //格式化成ext4文件
mount /dev/sdb1 /buildroot //挂载
二.编译器准备
编译BuildRoot 需要用到的编译环境是gcc-8.0以上,需要下载最新的gcc编译器,以下部分转载:
https://blog.csdn.net/qq_22186119/article/details/97930790
2.1 下载gcc源码包
从hust镜像站下载gcc源码包。
http://mirror.hust.edu.cn/gnu/gcc/
mkdir software
cd software
wget http://mirror.hust.edu.cn/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz
tar zxvf gcc-8.3.0.tar.gz
cd gcc-8.3.0
2.2 下载依赖包
./contrib/download_prerequisites
2.3 编译 //注意在build下编译
mkdir build
cd build
../configure --prefix=/usr/local/gcc-8.3.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib
make
make install
/
configure各项参数详解:
--prefix=/usr/local/gcc-8.3.0/
:把所有资源文件都放在该路径下。
--enable-checking=release
:生成的编译器在编译过程中不做额外检查。
--enable-languages=c,c++
:让gcc支持c,c++。
--disable-multilib
:不生成编译为其他平台可执行代码的交叉编译器。
三.碰到的问题
3.1 问题1
Your Perl installation is not complete enough
解决:yum install -y perl-ExtUtils-MakeMaker
3.2 问题2
you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
解决:export FORCE_UNSAFE_CONFIGURE=1
网上反馈这样无法解决问题,但是我编过去了
3.3 问题3
在编译该包host-fakeroot-1.20.2有编译错误
解决:AT_EMPTY_PATH编译文件libfakeroot.c, AT_EMPTY_PATH没有定义,去除
3.4 问题4
C compiler cannot create executables
解决:libexec --------gcc编译目录后有个libexec,将它复制到/usr/local/libexec目录下,即可,原来没有复制
或者export LIBS=
export DYLD_LIBRARY_PATH=
export LD_LIBRARY_PATH=
3.5 问题5
Sanitizing RPATH in target tree
PER_PACKAGE_DIR=/buildroot/buildroot-2020.08/output/per-package /buildroot/buildroot-2020.08/support/scripts/fix-rpath target
Error: can't execute patchelf utility '/buildroot/buildroot-2020.08/output/host/bin/patchelf'
解决:这个是在程序编译完后,打包过程中出现的错误,经分析,脚本中调用了程序patchelf, 将该程序在命令行下执行,有如下的错误,更新libstdc++.so.6的库
./patchelf: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./patchelf)
./patchelf: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./patchelf)
四.总结
总体来说,整个编译过程还是很顺利的,碰到的问题都解决掉了。