linux 从源码到编译-Linux驱动开发笔记(二):Ubuntu系统从源码编译安装gcc7.3

前言

编译ubuntu驱动之前,我发现使用gcc是7.3.0,很难直接或间接使用apt管理下载安装gcc7.3.0linux 从源码编译,所以只能从源码中安装gcc7.3.0编译器。

海湾合作委员概述

GCC 是在 GPL 许可发布自由软件,是 GNU 项目关键部分。 GCC的初衷是专门为GNU操作系统编译一个编译器。 它已被大多数类 Unix 操作系统(如 Linux、BSD、MacOSX 等)采用作为标准编译器。 GCC 甚至可以在 Google 的 Windows 上使用。 。 GCC支持多种计算机架构芯片,如x86、ARM、MIPS等,并已移植到多种其他硬件平台

GCC的前身是GNUC语言编译器(GNUCCompiler),只能处理C语言。 然而,它很快扩展并且似乎能够处理 C++。 后来扩展为支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各种处理器架构上的汇编语言,因此名称发生了变化。 GNU 编译器集合(GNUCompilerCollection)。

下载gcc7.3.0源码

下载链接

GCC编译第一步:安装所需环境

您必须能够访问联网。 如果您无法上网,则只能自行下载源码包。 然后配置、编译、安装三个三部曲,还要注意版本号,所以最好先安装好,检查一下版本号再下载。 版本号对应源代码可以在目标机器离线安装。

以下configure配置gcc时会出现的问题,所以需要先安装依赖库。

sudo apt-get install libgmp-dev
sudo apt-get install libmpfr-dev
sudo apt-get install libmpc-dev

这里安装完成后,后面会安装gcc7.5。 不要卸载现有的 gcc。 检查“进入坑1”。

第2步:下载并解压

tar xvf gcc-7.3.0.tar.gz

步骤3:配置配置

./configure

这里需要减少c和c++的配置,否则只会编译g++。

./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

看看《入坑2》。

第四步:编译make

make -j4

第一次编译后,执行几次make -j4linux 从源码到编译,最后再次执行make,确认各个线程已经正常运行完毕(PS:有些错误停止了,被没有停止的线程冲走了。保持这个习惯可以防止遗漏) 。

编译错误。

步骤5:编译错误“fatalerror:asm/errno.h:Nosuchfileordirectory”

引入error.h的头文件。 这里查了很多asm文件夹,最后发现只有asm-generic下面的有error.h。

sudo find / -name asm

以下一些没有error.h:

只有asm-generic下的才有error.h

sudo ln -s /usr/include/asm-generic /usr/include/asm

然后继续编译,make -j8

编译错误。

第6步:编译错误“sanitizer_syscall_generic.inc:15:24:error:'__NR_open'wasnotdeclaredinthisscope”

这里的错误其实是后来带进来

sudo ln -s /usr/include/asm-generic /usr/include/asm

这是错误的,需要改成另一种。 必须先删除,否则ln无法创建

sudo rm /usr/include/asm
sudo ln -s /usr/include/x86_64-linux-gnu/asm /usr/include/asm
ls /usr/include/asm
ls -l /usr/include/asm

然后继续编译,make -j8

第七步:编译成功

第8步:安装

sudo make install

步骤9:检查版本号以确认

陷阱一:本地需要g++,否则会出现编译错误

卸载g++后,编译gcc时出现错误:

原则

也许和交叉编译一样,交叉编译器也需要编译器将交叉编译器的源代码编译成交叉编译器(不过这几年SDK已经自带了交叉编译器)

解决

安装gcc并再次编译。

陷阱二:安装后只有g++,没有gcc问题

gcc版本是7.5,g++版本是7.3。

原则

配置文件需要配置编译c和c++,默认只有c++。

解决

更改配置文件

./configure

这里需要减少c和c++的配置,否则只会编译g++。

./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

然后重新编译,走一遍流程就解决了。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 linux 从源码到编译-Linux驱动开发笔记(二):Ubuntu系统从源码编译安装gcc7.3 https://www.wkzy.net/game/201529.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务