我的AI之路(13)--解决编译gcc/g++源码过程中出现的错误

GCC编译源码出错error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8. 使用gem5时需要更换内核,但是编译内核需要低版本的GCC。原系统gcc版本是5.6.0,需要更换成gcc4.4.0. 在编译安装gcc过程中出错,error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0 ,出错原因是需要这些库的支持,所以解决方法就是寻找相应的源码库安装即可,下面是解决方法。 首先下载GMP、MPC... 阅读详情

     假若你的Linux版本比较高,默认安装使用的gcc/g++版本比较高,比如Fedora28使用的gcc/g++ 8.1,而某些软件源码编译只支持较低版本的gcc版本,比如cuda9.0只支持gcc6(Fedora25默认使用的),cuda9.1/9.2使用gcc7(Fedora27默认使用的),那么一般可以有两种办法:

(1)安装scl后然后安装CentOS的repos源,然后安装devtoolset-6-gcc和devtoolset-6-gcc-g++,然后打开一个terminal窗口执行 scl enable devtoolset-6 bash以启用6.3版的gcc和g++,然后在这个窗口环境里编译caffe。但是安装devtoolset 6时往往要求删除gnome等核心组件的高版本,这点可能造成系统混乱,所以如果没有这些提示,可以继续安装,有这些提示那么就要慎重考虑了,除非你是自己的机器弄坏了可以随便重装。

(2)在https://mirrors.ustc.edu.cn/gnu/gcc/上下载编译源码要求的较低版本的gcc,比如cuda9要求的gcc6序列的gcc-6.4.0.tar.gz到本地解压后编译,其实gcc也有编译好了的二进制版本可以直接下载后使用,但我还是觉得用源码在本机编译出来的好,因为编译过程中你可能会发现很多错误,有无错误和错误的情况可以看出你本机对低版本的gcc的支持情况,像如果你机器上已经默认安装的是gcc8.1,现在想要使用gcc6.x,那么编译gcc6.x源码过程中会出现好些错误,这些错误是因为gcc在升级过程中对头文件的一些结构变量的定义的更改变化没有做向后兼容处理,或者某些语法的严格性要求不一样(比较常见的是struct的定义和申明)。也需你觉得奇怪,为何不加-L参数把头文件搜索路径指向gcc6.x自己源码里的include目录呢?这样做当然可以顺利编译,但是却隐藏了你的gcc6.x和本机的主环境gcc8.1的差异,哪天使用这些不同编译环境时忘了设置完整正确的路径产生了混用情况,可能会出现莫名其妙很多问题,所以我觉得还是自己手工把因差异出现的错误解决掉的好,除非实在解决不了,那么没法,只能以后自己使用时时刻注意头文件的差异。

     假若本级默认安装的gcc版本与你要用源码编译的gcc版本相差不大,一般能顺利编译完,但是如果是8.1和6.4版本差这么多,那编译的过程中就会有不少错误。

首先执行

yum install gcc mpfr-devel libmpc libmpc-devel glibc-devel

安装好依赖包,然后解压gcc-6.4.0源码,然后进入到解压目录里面,执行:

./configure --prefix=/usr/local/gcc64 --program-suffix=64 --enable-languages=c,c++ --disable-multilib

生成Makefile,然后执行make开始编译,编译一阵后就报错:

./md-unwind-support.h:65:48:  error:  dereferencing pointer to incomplete type 'struct ucontext'

   sc = (struct sigcontext *)(void *) &uc_->uc_mcontext);

这个文件实际是./x86_64-pc-linux-gnu/libgcc/md-unwind-support.h,看了一下文件中65行左右的源码,初次看似乎没啥问题,我知道这种错误一般是struct定义变量时不严格引起的,仔细看了一下出错这行前面定义变量uc_的代码:

 struct ucontext * uc_ = context->cfa;

感觉原因是这个struct ucontext *对于要求严格的编译器可能不能这个用,因为定义这个struct的地方实际形式是

struct ucontext

{

  ...

} ucontext_t;

于是试着改成  struct ucontext_t * uc_ = context->cfa;   然后执行make就可以往下走了,后面开始漫长的等待后大约还会报三四个错,多数都是跟结构的定义发生了变化有关,具体细节时间久了有点记不清了,先暂写到这里,等我哪天需要在Fedora28下编译gcc6.x源码时再完善这篇文章。睡觉

解决所有编译错误编译完成后,执行make install把gcc6.4安装到指定目录下去,然后编译要使用此gcc版本的源码时把头文件和库搜索路径都指向这个gcc6.4所在路径,或者重命名系统的/usr/bin/gcc和g++,创建链接指向gcc6.4对应的文件即可开始编译。

 

我的AI之路(1)--前言

我的AI之路(2)--安装Fedora 28

我的AI之路(3)--安装Anaconda3 和Caffe

我的AI之路(4)--在Anaconda3 下安装Tensorflow 1.8

我的AI之路(5)--如何选择和正确安装跟Tensorflow版本对应的CUDA和cuDNN版本

我的AI之路(6)--在Anaconda3 下安装PyTorch

我的AI之路(7)--安装OpenCV3_Python 3.4.1 + Contrib以及PyCharm

我的AI之路(8)--体验用OpenCV 3的ANN进行手写数字识别及解决遇到的问题

我的AI之路(9)--使用scikit-learn

我的AI之路(10)--如何在Linux下安装CUDA和CUDNN

我的AI之路(11)--如何解决在Linux下编译OpenCV3时出现的多个错误

我的AI之路(12)--如何配置Caffe使用GPU计算并解决编译中出现的若干错误

我的AI之路(13)--解决编译gcc/g++源码过程中出现的错误

我的AI之路(14)--Caffe example:使用MNIST数据集训练和测试LeNet-5模型

我的AI之路(15)--Linux下编译OpenCV3的最新版OpenCV3.4.1及错误解决

我的AI之路(16)--云服务器上安装和调试基于Tensorflow 1.10.1的训练环境

我的AI之路(17)--Tensorflow和Caffe的API及Guide

我的AI之路(18)--Tensorflow的模型安装之object_detection

我的AI之路(19)--如何在Windows下安装pycocotools PythonAPI

我的AI之路(20)--用Tensorflow object_detection跑raccoon数据集

我的AI之路(21)--用Tensorflow object_detection跑PASCAL VOC 2012数据集

我的AI之路(22)--使用Object_Detection_Tensorflow_API

我的AI之路(23)--在Windows下编译Bazel和使用Bazel编译tensorflow

 

 

编译gcc报错make[3]: Leaving directory `/usr/local/src/gcc-7.4.0/build/gcc' make[2]: *** [all-stage1-gcc]... 因业务需要安装7.4高版本gcc时报错: configure: error: in `/usr/local/src/gcc-7.4.0/build/gcc': configure: error: C++ preprocessor "/lib/cpp" fails sanity checkSee `config.log' for more details. make[3]: Le... 阅读详情

相关推荐

MinGW-w64安装配置实战:Windows下轻量C/C++编译环境搭建指南

MinGW-w64是Windows平台实现GNU工具链兼容的核心技术方案,其本质是通过预编译二进制方式将GCC、G++等原生Linux构建工具移植至Windows,绕过MSVC依赖与Visual Studio重型生态。原理上依托POSIX层抽象与SEH/SJLJ异常模型适配,保障C++17/20标准支持及线程、RTTI等关键特性可用性。技术价值在于零运行时依赖、极简部署、IDE无关性与CI友好性,显著降低嵌入式开发、算法验证及教育场景的入门门槛。典型应用场景包括VS Code轻量C++开发、CMake跨平台

weixin_33711647的博客 385

编译gcc源码

编译gcc源码

咯咯哒 4300

告别‘pip install’失败:手把手教你用源码编译方式安装Detectron2(解决网络和依赖问题)

本文详细介绍了如何通过源码编译方式安装Detectron2,解决常见的网络连接问题和环境依赖冲突。从环境准备到源码获取,再到深度编译安装和高级排错,提供了一套完整的解决方案,帮助开发者高效完成安装并优化性能。

weixin_30576827的博客 366

g++编译线程失败

原文地址: http://blog.chinaunix.net/uid-26748613-id-3378023.html   点击(此处)折叠或打开 #include stdio.h> #include stdlib.h> #include pthread.h> void thread(void) {     int i;     f

sinc00的专栏 1234

Ubuntu 18.04安装Carla实战指南:gcc/cmake/Python三重升级避坑

Carla作为基于Unreal Engine的自动驾驶仿真平台,其核心依赖并非普通Python库,而是深度耦合C++17、特定版本CMake与ABI兼容的Python运行时。理解gcc对std::optional的支持机制、cmake多级嵌套构建的路径解析逻辑,以及pyenv隔离部署Python 3.7的必要性,是突破编译失败的关键。这类底层工具链兼容性问题,在Ubuntu 18.04等LTS系统中尤为突出,直接影响ROS Melodic生态下的传感器仿真、Autoware标定及端到端训练数据生成。本文聚焦

weixin_34008784的博客 406

银河麒麟Arm系统GCC 12.01源码编译实战指南

GCC是Linux系统核心编译工具链,其版本直接影响C++20特性支持、ABI兼容性与国产芯片指令集适配能力。在ARM架构国产操作系统如银河麒麟中,预装旧版GCC(如9.3.0)常导致std::span等现代C++语法报错、libstdc++.so.6.0.30符号缺失、-march=armv8.2-a+crypto参数失效等问题。根源在于系统级工具链需严格匹配麒麟定制glibc 2.28、鲲鹏处理器扩展指令及等保三级PIE签名要求。源码编译GCC 12.01成为刚需——它提供对ARMv8.2-A+Cryp

weixin_33933118的博客 396

g++ 无法调试

问题描述:在gcc4.9,gdb7.0环境下,启动gdb时出现了如下错误:Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module /dawnfs/users/  出现此错误的原因主要是gcc4.9生成的调试信息是dawnfs4,而gdb7.0支持的是dawnfs2

bqw2008的专栏 1960

手把手教你用TI MOSFET搭建0-100mA恒流源电路(附避坑指南)

本文详细介绍了如何使用TI MOSFET SI1204D搭建0-100mA恒流源电路,包括基础原理、电路设计、PCB布局和热管理技巧。通过分步指导和避坑指南,帮助工程师实现高精度、低成本的电流控制方案,适用于LED驱动、传感器激励等多种应用场景。

weixin_29310631的博客 483

CUDA安装后编译失败?确认gcc版本是否符合要求

安装CUDA后仍遇编译错误,往往因GCC版本过高。CUDA依赖系统编译器处理主机代码,新版GCC可能不被支持,尤其在Ubuntu 22.04等系统上常见。通过切换GCC版本、环境变量指定或容器化可解决。提前验证兼容性,避免耽误开发进度。

weixin_35756624的博客 526

资治通鉴:文言文、白话文对照读本

介绍一处可以免费下载资治通鉴的网址,该文献共20卷,排版为左边是文言文,右边是白话文翻译,对照阅读非常方便。下面是1-20卷的链接地址:第一卷:http://www.docin.com/p-9705067.html 第二卷:http://www.docin.com/p-9705979.html 第三卷:http://www.docin.com/p-9709382.html 第四卷:

aiwis的专栏 2548

【Tessent Shell Users Manual】【Ch3】Design Introspection and Editing(未完待续)

Tessent Shell 提供了一系列用于检查(examining/introspecting)和编辑design的命令。

Tranquil_ovo的博客 1731

告别漫长编译:在 Ubuntu 22.04 上快速体验 GCC 13 的 C++20/23 新特性

本文介绍了在Ubuntu 22.04上快速体验GCC 13的C++20/23新特性的三种高效方法:使用PPA仓库、Docker容器和Conda环境。这些方案避免了漫长的源码编译过程,帮助开发者快速部署GCC 13环境,立即探索最新的C++特性,提升开发效率。

weixin_26516551的博客 367

Code Composer Studio 12.0.0版本 官方例程导入实战指南

本文详细介绍了在Code Composer Studio 12.0.0版本中,如何利用内置的Resource Explorer工具高效导入官方例程的完整实战指南。通过分步讲解定位开发板、导入工程、配置编译器及调试验证等关键操作,帮助开发者快速上手TI微控制器开发,避免常见错误,有效提升学习与开发效率。

weixin_29169899的博客 122

麒麟V10服务器源码编译升级GCC 9.3完整指南

GCC作为Linux生态中最基础的编译工具链,直接决定了软件能否在新硬件与新标准下高效运行。随着C++17、OpenMP等特性的普及,系统自带的老版本GCC往往因缺少新特性支持而成为项目构建的瓶颈,尤其在国产化操作系统中尤为常见。通过源码编译方式升级GCC,不仅能够获得更完整的新语言标准支持,还能确保与特定内核和库的兼容性。在金融、政务等内网环境中,离线编译GCC 9.3往往需要预先准备GMP、MPFR等依赖库,并合理管理PATH与LD_LIBRARY_PATH等环境变量。围绕麒麟V10服务器,系统梳理了从

weixin_33946020的博客 357

裸眼3D技术发展与应用前景

这项技术利用传感器或摄像头实时监测观众的位置和视角,然后根据观众的位置信息动态调整投射的图像,确保不同位置的观众都能看到一致的3D效果。这种技术不仅可以在电影院和家庭影院中应用,还可以用于虚拟现实设备和大型展览等领域。裸眼3D呈现是一种不需要佩戴任何特殊设备(如3D眼镜或头盔)即可观看到3D效果的技术。这种技术近年来得到了快速发展,为观众带来了更加沉浸式的视觉体验。总之,裸眼3D呈现技术的发展为观众带来了更加真实、沉浸式的视觉体验。随着技术的不断进步和创新,相信未来裸眼3D将会在更多领域得到应用和推广。

学无止境 1999

老款 NUC 复活计划:装 Ubuntu 部署 OpenClaw 本地 AI

老款 NUC 变身本地 AI 服务器指南 本文详细介绍了如何将老旧华硕 NUC 设备改造为本地 AI 服务器。主要内容包括: 硬件评估:列出老款 NUC 的最低配置要求(i3 6代/8GB内存/256GB SSD),并提供兼容性检查命令和性能预期表 系统准备:指导备份数据、下载 Ubuntu 22.04 LTS 和制作启动盘的方法(Windows/Linux双平台) 安装流程:从 BIOS 设置到 Ubuntu 安装的完整步骤,包括推荐的分区方案 系统优化:禁用不必要的服务、内核参数调优、Swap 配置和

博客 7608

C++AI编译错误自动修复神器-告别手动Debug的终极方案

在日常 C++ 开发中,编译错误是最频繁遇到的障碍之一。一个中等规模的项目在重构期间,一次 可能产生数十甚至上百条错误信息。这些错误往往具有级联效应——一个头文件的拼写错误可能导致下游十几个翻译单元同时报错,而真正需要修改的地方只有一处。传统的工作流是: 这个循环对于经验丰富的开发者来说尚可接受,但对于以下场景则效率极低:优势:局限:本项目最适合以下场景:阅读

weixin_48053866的博客 281

044、手持视频抖动严重?OpenCV 光流 + IMU 融合的电子防抖工程方案

本文探讨了基于OpenCV光流和IMU融合的手持视频电子防抖方案。作者从实际工程经验出发,分析了纯光流和纯IMU方案的局限性,指出时间戳对齐和坐标系标定是关键挑战。文章详细介绍了融合滤波器的实现方法,推荐互补滤波替代卡尔曼滤波,并提出了动态调整融合系数的策略。在光流算法优化方面,建议采用网格化FAST特征点和前后向误差检测。最后分享了运动补偿裁剪策略和多线程流水线设计,强调在嵌入式设备上使用NEON指令优化性能。该方案通过精确的时间同步和传感器融合,有效解决了手持拍摄中的高频抖动问题。

ai技术增长的博客 250

pip install headroom-ai 报 Unsupported compiler 怎么修复

用 `pip install headroom-ai` 安装 Headroom 的 Python 包(PyPI 上发布名为 `headroom-ai`,要求 Python 3.10+,官方发布覆盖 CPython 3.10–3.13 的 wheel)时,如果安装日志里出现: ```text RuntimeError: Unsupported compiler -- at least C++11

gitblog_00697的博客 435

Codex入门24-效率倍增秘籍(终极总结:10个让你开发速度翻倍的Codex高级技巧)

专栏收官之作!经过前23篇的系统学习,你已经掌握了 Codex CLI 的核心用法。本文浓缩10个实战验证的高级技巧:管道化提示词将复杂任务拆成递进指令链,模板化 SKILL.md 打造个人技能库,Shell 别名让操作快如闪电,多模型切换省钱又高效……这不是理论课,每个技巧都配有可直接运行的代码。掌握全部10招,构建你的 AI 开发工作流闭环,让开发速度真正翻倍!

yueyeguzhuo的专栏 190

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Jetson Orin Nano 安装 torchvision 0.15.1:源码编译 3 个常见错误与解决方案

本文详细介绍了在Jetson Orin Nano上源码编译torchvision 0.15.1时可能遇到的3个致命错误及其解决方案,包括内存不足、符号未定义和隐式依赖缺失问题。通过环境准备、编译参数优化和版本匹配验证等实战技巧,帮助开发者高效完成深度学习框架部署。

weixin_34068198的博客 293

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

./md-unwind-support.h:65:47: 错误:dereferencing pointer to incomplete type ‘struct ucontext’的解决方法

  这个错误是在使用cmake编译低版本gcc时候出现的。报错信息如下所示: ./md-unwind-support.h:65:47: 错误: dereferencing pointer to incomplete type ‘struct ucontext’ sc = (struct sigcontext *) (void *) &uc_->uc_mcontext; ^   在我这里

zeeq的博客 3616

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

vLLM 安装指南:GPU/CPU 多平台支持、预编译 Wheel 与源码构建全流程

本篇基于 vLLM 官方安装文档整理,覆盖 NVIDIA CUDA、AMD ROCm、Intel XPU、Apple Silicon 与 x86/ARM/IBM Z 等 CPU 平台的完整安装路径,包括预编译 wheel 安装、源码构建(含免编译的 Python-only 模式)以及 Docker 镜像部署,并结合仓库源码说明安装变量与平台识别机制,帮助你在不同硬件上快速搭起可用的 vLLM 推理

gitblog_00100的博客 1077

ROCm 7.x 编译 PyTorch 实录,解决 vLLM 算子不匹配难题

本文详解 ROCm 7.x 环境下编译 PyTorch 与 vLLM 的实战指南。通过锁定 GCC 11 版本、精准配置架构变量及解决 Triton 依赖冲突,有效攻克算子不匹配难题。掌握无隔离构建与缓存清理策略,助开发者打造稳定高效的 AI 推理底座。

2600_96323192的博客 52

CentOS下GCC多版本共存:GCC Toolset与devtoolset完全指南

在服务器运维和C++项目开发中,GCC作为核心编译工具链,其版本往往左右着系统稳定性与项目兼容性。CentOS自带的系统编译器因追求稳健而版本偏旧,但新项目对C++17/20特性、CUDA工具链及ABI兼容性的硬性要求,催生了多版本GCC共存的真实需求。GCC Toolset(CentOS 7时代为devtoolset)通过软件集合机制,将新版本编译器安装在独立目录,借助PATH、LD_LIBRARY_PATH等环境变量实现“不覆盖、只增强”的安全切换,既能满足项目对编译器的版本诉求,又不破坏系统自有工具链

weixin_33895516的博客 372

Linux下GCC安装的四大方法与实战避坑指南

GCC(GNU Compiler Collection)是Linux系统核心编译工具链,不仅包含C/C++编译器,还涵盖预处理器、链接器、运行时库及标准头文件。其本质是一套ABI敏感、版本强耦合、发行版策略差异显著的构建基础设施。理解GCC的元包机制、多版本共存原理与环境隔离逻辑,是保障C/C++项目可复现编译、跨平台兼容和生产稳定交付的技术前提。本文围绕实际工程场景——从Hello World验证、AI框架构建到国产化ARM交叉编译——系统解析apt/yum源装、高版本工具链仓库(如ubuntu-tool

weixin_30983353的博客 174
上一篇: 我的AI之路(12)--如何配置Caffe使用GPU计算并解决编译中出现的若干错误
下一篇: 我的AI之路(14)--Caffe example:使用MNIST数据集训练和测试LeNet-5模型
Arnold-FY-Chen
博客等级 码龄19年 925粉丝 204原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值