gcc5.4.0 编译时的错误汇总

在使用高版本的gcc编译gcc5.4.0时会出现的所有错误。

1、报错:configure: error: in `/usr/local/src/gcc-5.4.0/build’:

解决:缺少gcc需要先安装一个任意gcc版本

2、报错:dereferencing pointer to incomplete type ‘struct ucontext’

解决:./md-unwind-support.h 将61行左右struct ucontext * uc_ = context->cfa

改成 struct ucontext_t * uc_ = context->cfa

3、configure: error: cannot find neither zip nor jar, cannot continue
解决:install zip

4、sanitizer_platform_limits_posix.cc:146:23: fatal error: sys/ustat.h: No such file or directory
注释掉 #include <sys/ustat.h> 这行内容(158 行左右)
接着在 250 行左右修改 unsigned struct_ustat_sz = sizeof(struct ustat); 语句,改为如下内容:

  // 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;

5、 报错:/sanitizer_stoptheworld_linux_libcdep.cc:237:22:

error: aggregate ‘sigaltstack handler_stack’ has incomplete type and cannot be defined struct sigaltstack handler_stack;

解决:将/sanitizer_stoptheworld_linux_libcdep.cc中第237行

struct sigaltstack handler_stack;

修改为:stack_t handler_stack;

将第二行注释

struct link_map;  // Opaque type returned by dlopen().

struct sigaltstack;                 

6、./include/java-signal.h:32:26: error: invalid use of incomplete type ‘struct _Jv_catch_fpe(int, siginfo_t*, void*)::ucontext’ gregset_t &_gregs = _uc->uc_mcontext.gregs;
停止声明非标准名称struct ucontext,现在只使用
POSIX要求的ucontext_t类型定义。
将struct ucontext改为ucontext_t

7、…/…/…/./libsanitizer/sanitizer_common/sanitizer_internal_defs.h:272:72: error: size of array ‘assertion_failed__1086’ is negative

使用sed -e '1086 s|^|//|' -i ./libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
这里的1086可能是其他数字,可根据情况修改命令

8、 报错:……//tsan_platform_linux.cc

res_state *statp = (__res_state*)state;

修改为:

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

9、 报错:……// asan_linux.cc

解决:在asan_linux.cc中添加头文件#include <signal.h>即可

10、手动安装gmp、mpc、mpfr

下载gcc5.4.0,解压后修改文件夹为gcc-build-5.4.0,然后新建dependence文件夹,解压gmp、mpc、mpfr到dependence,然后安装./configure、make、makeinstall

http://www.netgull.com/gcc/releases/gcc-4.5.0/
https://ftp.gnu.org/pub/gnu/gmp/
https://ftp.gnu.org/gnu/mpfr/
https://mirrors.sjtug.sjtu.edu.cn/gnu

11、安装编译时需要使用的命令

./configure --prefix=/home/test/gcc-build-5.4.0/dependence/mpfr-2.4.2 --with-gmp=/home/test/gcc-build-5.4.0/dependence/gmp-4.3.2

./configure --prefix=/home/test/gcc-build-5.4.0/dependence/mpfr-2.4.2 --with-gmp=/home/test/gcc-build-5.4.0/dependence/gmp-4.3.2

./configure --prefix=/home/test/gcc-build-5.4.0/dependence/mpc-0.8.1 --with-gmp=/home/test/gcc-build-5.4.0/dependence/gmp-4.3.2 --with-mpfr=/home/test/gcc-build-5.4.0/dependence/mpfr-2.4.2

./configure --prefix=/home/test/gcc-build-5.4.0 --disable-multilib --with-gmp=/home/test/gcc-build-5.4.0/dependence/gmp-4.3.2 --with-mpfr=/home/test/gcc-build-5.4.0/dependence/mpfr-2.4.2 --with-mpc=/home/test/gcc-build-5.4.0/dependence/mpc-0.8.1

12、使用时需要使用的命令

export PATH=/home/test/gcc-build-5.4.0/bin:$PATH
export LD_LIBRARY_PATH=/home/test/gcc-build-5.4.0/lib64:/home/test/gcc-build-5.4.0/dependence/gmp-4.3.2/lib:/home/test/gcc-build-5.4.0/dependence/mpfr-2.4.2/lib:/home/test/gcc-build-5.4.0/dependence/mpc-0.8.1/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/test/gcc-build-5.4.0/dependence/gmp-4.3.2/lib:$LD_LIBRARY_PATH 
export LD_LIBRARY_PATH=/home/test/gcc-build-5.4.0/dependence/mpfr-2.4.2/lib:$LD_LIBRARY_PATH 
export LD_LIBRARY_PATH=/home/test/gcc-build-5.4.0/dependence/mpc-0.8.1//lib:$LD_LIBRARY_PATH 
export MANPATH=/home/test/gcc-build-5.4.0/share/man:$MANPATH
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要在Linux系统中安装gcc 5.4.0版本,您可以按照以下步骤进行操作: 首先,确保您的Linux系统已经安装了基本的编译工具和依赖项。您可以通过在终端中运行以下命令来检查gcc的安装情况: ``` gcc --version ``` 如果已经安装了gcc,将会显示当前安装的gcc版本信息。如果未安装gcc,将会显示未找到命令的错误信息。 接下来,您需要在终端中输入以下命令来安装gcc 5.4.0所需的依赖项: ``` sudo apt-get install build-essential sudo apt-get install libssl-dev ``` 第一条命令将会安装编译工具集合,而第二条命令将会安装OpenSSL开发库,这是gcc 5.4.0所需的一个依赖项。 完成依赖项的安装后,您可以继续执行以下命令来下载和安装gcc 5.4.0: ``` wget https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz tar -xf gcc-5.4.0.tar.gz cd gcc-5.4.0 ./configure make sudo make install ``` 第一条命令将会从GNU官方网站下载gcc 5.4.0的源代码压缩包。接下来,通过tar命令解压缩源代码,并切换到解压后的目录。然后,执行configure命令来配置安装选项。紧接着,运行make命令来编译源代码,并运行sudo make install命令来安装gcc 5.4.0。这可能需要一些间来完成。 安装完成后,您可以通过以下命令来验证gcc安装是否成功: ``` gcc --version ``` 如果显示的版本信息为5.4.0,则说明安装成功了。 这就是在Linux系统中安装gcc 5.4.0的步骤。希望能对您有所帮助! ### 回答2: 要在Linux系统上安装gcc 5.4.0版本,可以按照以下步骤进行: 1. 首先,从gcc官方网站或镜像站点上下载gcc 5.4.0的源代码包(通常是一个tar.gz或tar.bz2压缩文件)。 2. 在终端中,使用以下命令解压缩下载的源代码包: ``` tar -xf gcc-5.4.0.tar.gz ``` 3. 进入解压缩后的源代码目录: ``` cd gcc-5.4.0 ``` 4. 创建一个用于构建gcc的目录,并进入该目录: ``` mkdir build cd build ``` 5. 运行以下命令以配置gcc的构建: ``` ../configure ``` 6. 如果缺少某些依赖库文件,可以根据错误提示,使用软件包管理工具安装相应的依赖项。 7. 配置完成后,运行以下命令进行构建和安装: ``` make sudo make install ``` 8. 安装完成后,可以在终端中输入以下命令验证gcc版本是否为5.4.0: ``` gcc --version ``` 以上是在Linux系统上安装gcc 5.4.0的一种方法。请注意,安装过程可能会因为不同的Linux发行版而有所差别,具体步骤可以参考gcc官方文档或相关的Linux发行版文档。 ### 回答3: 要在Linux上安装gcc 5.4.0,可以按照以下步骤进行操作: 1. 打开终端,以root用户或具有sudo权限的用户身份登录。 2. 确保系统已经更新到最新版本,可以运行以下命令进行更新: ``` sudo apt-get update sudo apt-get upgrade ``` 3. 安装gcc编译器和其他必要的组件,运行以下命令: ``` sudo apt-get install build-essential ``` 4. 下载gcc 5.4.0的源代码。可以从官方gcc网站(https://gcc.gnu.org/releases.html)上下载tar.gz压缩包,并使用以下命令解压: ``` tar xzf gcc-5.4.0.tar.gz ``` 5. 进入解压后的目录: ``` cd gcc-5.4.0 ``` 6. 运行以下命令配置编译选项: ``` ./configure ``` 7. 编译安装gcc,运行以下命令: ``` make sudo make install ``` 8. 安装完成后,可以使用以下命令验证gcc版本: ``` gcc --version ``` 安装完成后,您应该能够成功在Linux上使用gcc 5.4.0进行编译和运行程序。注意,在使用此版本之前,请确保您的系统满足gcc 5.4.0的硬件和软件要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值