Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器

这篇具有很好参考价值的文章主要介绍了Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130533941文章来源地址https://www.toymoban.com/news/detail-464063.html

红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

Linux系统移植和驱动开发专栏

上一篇:《Linux驱动开发笔记(一):helloworld驱动源码编写、makefile编写以及驱动编译基本流程》
下一篇:《Linux驱动开发笔记(三):基于ubuntu的helloworld驱动源码编写、makefile编写以及驱动编译加载流程测试》


前言

  编译ubuntu驱动之前,发现使用的gcc是7.3.0,而使用apt管理和下载的都无法直接或间接安装gcc7.3.0,于是只能从源码安装gcc7.3.0编译器。


GCC

概述

  GCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分。GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、MacOS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。GCC支持多种计算机体系结构芯片,如x86、ARM、MIPS等,并已被移植到其他多种硬件平台。
  GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection) 。

下载gcc7.3.0源码

  下载地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz


GCC编译

步骤一:安装所需要的环境

  这里肯定要上网了,要是没有上网则只能自己去下载源码包,然后配置、编译和安装三部曲了,而且还得注意版本号,所以最好还是先安装一次查看版本号,再去下载对应版本号的源码,去目标机离线安装。
  下面是configure配置gcc会出现的问题,所以需要先安装依赖库。
  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器

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

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
  这里安装完,然后装的gcc7.5, 不要卸载已有的gcc,查看“入坑一”。

步骤二:下载解压

tar xvf gcc-7.3.0.tar.gz

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器

步骤三:配置configure

./configure

  这里要增加c和c++的配置,不然编译出来只有g++了

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

  查看 “入坑二”。
  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器

步骤四:编译make

make -j4

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
  第一次编译后再下执行几次make -j4,最后再执行一次make,确认每个线程都正常跑完(PS:有些错了就停止了,但是被没停止的线程冲掉了,保持这个习惯即可避免疏忽)。
  编译出错。

步骤五:编译出错“fatal error: asm/errno.h: No such file or directory”

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
  引入error.h的头文件,这里查了很多asm文件夹,最后发现只有asm-generic下的才有error.h

sudo find / -name asm

  以下的一些都没有error.h:
  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
  只有asm-generic下的才有error.h

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

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器

  然后继续编译,make -j8
  编译出错。

步骤六:编译出错“sanitizer_syscall_generic.inc:15:24: error: ‘__NR_open’ was not declared in this scope”

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
  这里错误实际上是前面带进来的

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

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
  然后继续编译,make -j8

步骤七:编译成功

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器

步骤八:安装

sudo make install

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器

步骤九:查看版本号确认

  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器


入坑

入坑一:本地需要g++,否则编译报错

问题

  卸载了g++,编译gcc的时候报错:
  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器

原理

  可能跟交叉编译一样,交叉编译的编译器也是需要一个编译器编译交叉编译器的源码来生成交叉编译器的(只不过最近几年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

  然后重新编译走一遍流程解决。
  Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器


上一篇:《Linux驱动开发笔记(一):helloworld驱动源码编写、makefile编写以及驱动编译基本流程》
下一篇:《Linux驱动开发笔记(三):基于ubuntu的helloworld驱动源码编写、makefile编写以及驱动编译加载流程测试》


若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130533941

到了这里,关于Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/134533533 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《Linux驱动开发笔记(三

    2024年02月05日
    浏览(53)
  • Docker系列(1)安装Linux系统编译Android源码

    目录 一、开发环境搭建 1.Windows docker环境安装 2.配置ubuntu18.04系统 2.0 准备工作 2.1 安装ubuntu18.04 2.2 安装常用工具 2.3 安装rk3568环境编译工具 2.4 新增用户 2.5 注意避坑!! 二、下载编译 Android_SDK 3.1 第一步,下载 SDK 3.2 第二步,更新 SDK 3.3 第二步,编译 SDK 手动编译 iCore-3568JQ An

    2024年02月11日
    浏览(45)
  • 【树莓派Linux内核开发】入门实操篇(虚拟机Ubuntu环境搭建+内核源码获取与配置+内核交叉编译+内核镜像挂载)

    1.ubuntu18.04镜像下载 打开ubuntu18.04镜像传送门,进入到主页 往下滑,找到相应镜像并下载 等待镜像下载完毕即可 2.VMware软件安装 VMware是一款 运行在windows系统上的虚拟机软件 ,可以虚拟出一台计算机硬件,方便安装各类操作系统 进入VMware官网传送门,来到主页,往下滑,选

    2024年04月29日
    浏览(56)
  • FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg

    FFmpeg支持Linux、macOS、Windows、Android等操作系统,其中Linux系列包括Ubuntu、Debian、Mint、CentOS、RHEL、Fedora等分支。FFmpeg官网的编译入口地址为 https://trac.ffmpeg.org/wiki/CompilationGuide,在这里可以找到FFmpeg对各系统的编译说明。更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到

    2024年03月23日
    浏览(43)
  • Linux更新操作系统Openssh版本9.3p1(源码编译安装)

    安装依赖 yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel yum install -y pam* zlib* openssh-9.3p1.tar.gz openssl-3.1.0.tar.gz 备份文件 cp /etc/pam.d/sshd /etc/pam.d/sshd.bak 解压安装包 tar zxvf openssl-3.1.0.tar.gz cd openssl-3.1.0 备份旧Openssl mv /usr/bin/openssl /usr/bin/openssl_old mv /usr/include/

    2024年02月12日
    浏览(71)
  • 基于RK3588的嵌入式linux系统开发(二)——uboot源码移植及编译

            由于官方的SDK占用空间较大(大约20GB左右),需要联系相关供应商提供,且官方的SDK通过各种脚本文件进行集成编译,难以理解系统开发的详细过程。本章介绍直接从官方Github网站下载源码进行移植,进行uboot移植及编译,具体内容如下所述: 1.进入官方的github网

    2024年01月16日
    浏览(60)
  • Ubuntu 22.04 编译安装 Qt mysql驱动

    参考自 Ubuntu20.04.3 QT5.15.2 MySQL驱动编译 Ubuntu 18.04 编译安装 Qt mysql驱动 下边这篇博客不是主要参考的, 但是似乎解决了我的难题(找不到 libmysqlclient.so ) ubuntu18.04.2 LTS 系统关于Qt5.12.3 无法加载mysql驱动,需要重新编译MYSQL数据库驱动的问题以及解决方案 系统版本 MySQL 肯定要先安

    2024年01月16日
    浏览(65)
  • 【万字详细教程】Linux to go——装在移动硬盘里的Linux系统(Ubuntu22.04)制作流程;一口气解决系统安装/引导文件迁移/显卡驱动安装等问题

    如果不想看前面的废话😭,请跳转到 1.准备工具 处开始阅读。 制作基于PSSD的Linux to go系统是我很早就打算做的事情,但这毕竟不是常规的装系统,因此在这之前我也调研了许多经验贴,不过我的思路是找到一个看起来最靠谱而且步骤相对简单的帖子,然后一路跟着走下去。

    2024年02月22日
    浏览(134)
  • Linux | Ubuntu配置JDK源码编译环境

    宿主机环境:Windows 11 家庭版 21H2 版本 宿主机操作系统版本:22000.348 虚拟机环境:VMware® Workstation 17 Pro 虚拟机操作系统版本:Ubuntu 22.10 参考:《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》 在 Win 11 家庭版中使用 VMware 可能会产生一些兼容性问题,比如蓝屏、无法

    2024年02月03日
    浏览(42)
  • QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

    如果需要在QT程序中实现与MySQL数据库的交互,那么必不可少的一环就是对Qt MySql数据库驱动的编译。 操作系统:Windows10 专业版 64位 Qt版本:Qt 5.15.2 开发环境Qt安装路径:D:Qt 交叉编译服务器:Ubuntu 18.4 交叉编译服务器Qt安装路径:/opt/Qt 目标芯片:rk3568 目标平台:arm64 Qt安装

    2024年02月11日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包