IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ubuntu 20.04LST跌跌撞撞安装编译gcc6.3.0 -> 正文阅读

[系统运维]ubuntu 20.04LST跌跌撞撞安装编译gcc6.3.0

下载

首先在官网上下载gcc6.3.0,链接如下:
https://ftp.gnu.org/gnu/gcc/gcc-6.3.0/

安装依赖包

按顺序安装gcc必备的几个包:m4、gmp、mpfr、mpc

m4:

./contrib/download_prerequisites

gmp(http://www.gnu.org/software/m4/):

文件夹打开终端
./configure
make -j12
sudo make install

mpfr(https://mpfr.loria.fr/):

文件夹打开终端
./configure
make -j12
sudo make install

mpc(https://www.multiprecision.org/mpc/ ):

文件夹打开终端
./configure
make -j12
sudo make install

安装

找到下载的文件,提取,文件夹内打开终端

sudo ./configure --prefix=/usr/local/gcc-6.3 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=$HOME/local/ --with-mpfr=$HOME/local/ --with-cgal=$HOME/local/
make -j12 # j 后面的数字越大编译速度越快
sudo make install

编译过程中出现的问题

问题1:error: dereferencing pointer to incomplete type ‘struct ucontext’

在函数‘x86_64_fallback_frame_state’中: ./md-unwind-support.h:65:47: 错误: dereferencing pointer to incomplete type ‘struct ucontext’       
 sc = (struct sigcontext *) (void *) &uc_->uc_mcontext;    

解决方案:

 struct ucontext * uc_ = context->cfa; 

修改为

struct ucontext_t * uc_ = context->cfa; 

重新make

问题2:sanitizer_platform_limits_posix.cc:158:23: 致命错误:sys/ustat.h:没有那个文件或目录

../../.././libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:159:
28: fatal error: sys/ustat.h: No such file or directory
 #include <sys/ustat.h>
                       ^
compilation terminated.

解决方案:

修改libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc文件:

vim libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc

首先注释掉 #include <sys/ustat.h>
接着在 251 行修改 unsigned struct_ustat_sz = sizeof(struct ustat); 语句
注释掉251行,换行后粘贴以下内容:

  // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
  // has been removed from glibc 2.28.
#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
  || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \
  || defined(__x86_64__)
#define SIZEOF_STRUCT_USTAT 32
#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \
  || defined(__powerpc__) || defined(__s390__)
#define SIZEOF_STRUCT_USTAT 20
#else
#error Unknown size of struct ustat
#endif
  unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;

重新make

问题3:

../../.././libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc:270:22: 错误: 聚
合‘sigaltstack handler_stack’类型不完全,无法被定义
   struct sigaltstack handler_stack;
                      ^~~~~~~~~~~~~

解决方案:

1.打开libsanitizer/sanitizer_common/sanitizer_linux.h文件,注释第22行的struct sigaltstack;
2.修改31.32行:

uptr internal_sigaltstack(const struct sigaltstack* ss,
                          struct sigaltstack* oss);

修改为

uptr internal_sigaltstack(const void* ss, void* oss);

3.修改libsanitizer/sanitizer_common/sanitizer_linux.cc文件549、550行

uptr internal_sigaltstack(const struct sigaltstack *ss,                                      
                                struct sigaltstack *oss) {

修改为

uptr internal_sigaltstack(const void *ss, void *oss) {

4.修改libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc270行

struct sigaltstack handler_stack;

修改为

stack_t handler_stack;

5.修改libsanitizer/tsan/tsan_platform_linux.cc294行

__res_state *statp = (__res_state*)state;

修改为

struct __res_state *statp = (struct __res_state*)state;

重新make

问题4:sanitizer_common/sanitizer_internal_defs.h:254:72: error: size of array ‘assertion_failed__1142’ is negative

解决方案:

修改 /gcc-6.3.0/configure文件

删除文件中 target-libsanitizer \,大概在两千多行
重新make

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:22:23  更:2022-07-04 23:24:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 17:38:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码