【LFS 系列】从零开始 DIY Linux 系统:(五)构建临时系统 - GCC-4.9.2
2021/9/22 7:12:05
本文主要是介绍【LFS 系列】从零开始 DIY Linux 系统:(五)构建临时系统 - GCC-4.9.2,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
GCC
软件包是 GNU 编译器集合的一部分,其中包括 C 和 C++ 的编译器。
现在 GCC 需要 GMP、 MPFR 和 MPC 软件包。
在主机发行版中可能并不包括这些软件包,它们将和 GCC 一起编译。
解压每个软件包到 GCC 源文件夹并重命名解压后的文件夹,以便 GCC 编译过程中能自动使用这些软件!
首先,切换到 lfs
用户下:
su - lfs
确保环境变量已生效,并且解压软件包
echo $LFS cd $LFS/sources tar xf gcc-4.9.2.tar.bz2 cd gcc-4.9.2 tar -xf ../mpfr-3.1.2.tar.xz mv -v mpfr-3.1.2 mpfr tar -xf ../gmp-6.0.0a.tar.xz mv -v gmp-6.0.0 gmp tar -xf ../mpc-1.0.2.tar.gz mv -v mpc-1.0.2 mpc
下面的指令将会修改 GCC 默认的动态链接器为安装在 /tools 文件夹中的。
它也会从 GCC 的 include 搜索路径中移除 /usr/include
。执行:
for file in \ $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h) do cp -uv $file{,.orig} sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ -e 's@/usr@/tools@g' $file.orig > $file echo ' #undef STANDARD_STARTFILE_PREFIX_1 #undef STANDARD_STARTFILE_PREFIX_2 #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file touch $file.orig done
GCC 不能正确检测栈保护,这会导致编译 Glibc-2.21 时出现问题,用下面的命令修复这个问题:
sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
GCC 手册建议在源文件夹之外一个专门的编译文件夹中编译 GCC:
mkdir -v ../gcc-build cd ../gcc-build
准备编译 GCC:
../gcc-4.9.2/configure \ --target=$LFS_TGT \ --prefix=/tools \ --with-sysroot=$LFS \ --with-newlib \ --without-headers \ --with-local-prefix=/tools \ --with-native-system-header-dir=/tools/include \ --disable-nls \ --disable-shared \ --disable-multilib \ --disable-decimal-float \ --disable-threads \ --disable-libatomic \ --disable-libgomp \ --disable-libitm \ --disable-libquadmath \ --disable-libsanitizer \ --disable-libssp \ --disable-libvtv \ --disable-libcilkrts \ --disable-libstdc++-v3 \ --enable-languages=c,c++
运行命令编译 GCC:
make
安装软件包:
make install ln -vs gcc /tools/bin/cc
安装完成后清理工作:
cd .. rm -rf gcc-build rm -rf gcc-4.9.2
本次分享到此结束啦~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
❤️ 技术交流可以 关注公众号:Lucifer三思而后行 ❤️
这篇关于【LFS 系列】从零开始 DIY Linux 系统:(五)构建临时系统 - GCC-4.9.2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法