最近需要在ubuntu上安装gccxml,我的ubuntu版本是18。

使用sudo apt-get install gccxml提示找不到gccxml,最后使用了编译安装的方式安装gccxml。

1.下载

1 git clone https://github.com/gccxml/gccxml.git

如果下载速度过慢的话,可以先将此项目挂载到码云上,再使用码云的地址下载。

下载完毕后,会在当前文件目录下生成一个名为gccxml的文件目录。

2.编译安装

按照官网的教程,在gccxml文件夹所在目录(gccxml文件夹之外)新建一个gccxml-build文件夹

1 mkdir gccxml-build

之后,检查系统有无cmake(cmake --version),如果没有,sudo apt-get install cmake;

1 cd gccxml-build
2 cmake ../gccxml
3 make
4 make install

执行到make时,编译报错:(1). floor_log2,exact_log2重定义;(2).except.c:对"libc_name_p"未定义的引用。

按照CSDN上的一篇博客进行修改:https://blog.csdn.net/ztguang/article/details/71172559

错误1:

打开gccxml/GCC/gcc/toplev.h文件,

 1 /* 这两个函数已经在toplev.c中定义过了,在toplev.h中将其注释掉
2 extern inline int
3 floor_log2 (unsigned HOST_WIDE_INT x)
4 {
5 return x ? HOST_BITS_PER_WIDE_INT - 1 - (int) CLZ_HWI (x) : -1;
6 }
7
8 extern inline int
9 exact_log2 (unsigned HOST_WIDE_INT x)
10 {
11 return x == (x & -x) && x ? (int) CTZ_HWI (x) : -1;
12 }
13 */

错误2:

打开gddxml/GCC/gcc/cp/cfns.h

1 //找到这部分代码,并改为如下
2 //#ifdef __GNUC__
3 //__inline
4 //#endif
5 const char*
6 libc_name_p (register const char *str, register unsigned int len);

修改完成后,回到gccxml-build文件夹。

我将gccxml-build中的所有文件都删掉,rm -rf *,之后重新执行:

1 cmake ../gccxml
2 make
3 make install

完成后,gccxml --version,显示GCC-XMl version 0.9.0

安装成功。

ubuntu18 编译安装gccxml的更多相关文章

  1. Ubuntu18.04下编译安装Guitarix 0.37.3

    准备工作 源文件下载 https://sourceforge.net/projects/guitarix/files/guitarix/ 安装依赖. 参考 https://sourceforge.ne ...

  2. ubuntu18.04 编译安装 apache php

    1. apache apache 需要依赖几个模块:apr, apr-util, pcre,也分别源码安装. 1.1 编译安装 1.1.1 apr apr-util 下载地址:http://apr.a ...

  3. Linux c++ vim环境搭建系列(3)——Ubuntu18.04.4编译安装youcompleteme

    3. youcompleteme编译安装 参考网址: https://github.com/ycm-core/YouCompleteMe#linux-64-bit 建议不要用这个博客的方法: http ...

  4. Linux c++ vim环境搭建系列(2)——Ubuntu18.04.4编译安装llvm clang

    2. 源码编译安装llvm clang 参考网址: https://llvhttps

  5. Linux c++ vim环境搭建系列(1)——Ubuntu18.04.4编译安装vim8.2

    1. vim源码编译安装 参考网址: https://github.com/ycm-core/YouCompleteMe/wiki/Building-Vim-from-source 安装各类依赖库 s ...

  6. 编译安装和apt安装Nginx1.14.0

    安装依赖 yum -y install gcc gcc-c++yum -y install zlib zlib-devel openssl openssl-devel pcre-devel 在Ubun ...

  7. Centos7.4和Ubuntu18.04安装PHP7.2

    安装依赖 yum install gcc-c++ libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcu ...

  8. Ubuntu16.04编译安装Redis Desktop Manager

    Redis Desktop Manager for OSX&Ubuntu 的安装版是收费的, 如果自己编译则是免费的. 安装过程参考官方提供的文档  http://docs.redisdesk ...

  9. ubuntu18.04 安装hadoop 2.7.3+hive 2.3.4

    1. 安装hadoop 详细请参见本人的另外一片博文<Hadoop 2.7.3 分布式集群安装> 2. 下载hive 2.3.4 解压文件到/opt/software -bin.tar.g ...

  10. 编译安装msyql

    环境: ubuntu18.04.2 mysql5.7.21 #创建mysql属组 groupadd mysql useradd -g mysql mysql #查看属组 tail /etc/passw ...

随机推荐

  1. linux下的开机启动

    使用systemctl命令,systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 据说在CentOS7.0后,不再使用service, ...

  2. WEB服务与NGINX(24)- LNMP架构部署wordpress

    目录 1. LNMP架构项目实战 1.1 LNMP架构介绍 1.2 LNMP架构部署wordpress 1.2.1 LNMP环境介绍 1.2.2 二进制部署mariadb 1.2.3 部署php-fp ...

  3. ES集群的扩缩容

    ES集群节点的扩容缩容案例 1.在集群中添加和删除节点 当您启动Elasticsearch实例时,您正在启动一个节点.Elasticsearch集群是一组具有相同cluster.name属性的节点.当 ...

  4. ClickHouse 初步认识

    概述 Clickhouse 是分析型数据库,真正的面向列式存储,支持高维度表.它免费开源.具备高效的数据导入和查询性能,能达到 50M/200M 每秒.支持实时查询.支持不同功能底层存储引擎,例如:M ...

  5. .NET 将多个程序集合并成单一程序集的 4+3 种方法

    将 .NET 程序集与依赖合并到一起的方法有下面四种: 使用 .NET Core 3.0 自带的 PublishSingleFile 属性合并依赖使用 Fody使用 SourceYard 源代码包使用 ...

  6. 拼凑一个ABP VNext管理后台拼凑一个ABP VNext管理后台

    介绍# 本项目前后端分离,后端采用ABP VNext框架,前端Vue.项目地址: https://github.com/pojianbing/AuthCenter 目前包含的模块有: 身份认证管理 I ...

  7. 什么是LLM大模型训练,详解Transformer结构模型

    本文分享自华为云社区<LLM 大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解>,作者:汀丶. 1.模型/训练/推理知识介绍 深度学习领域所谓的&quo ...

  8. 解决PMML namespace URI httpwww.dmg.orgPMML-4_4 is not supported

    使用pmml的方式跨平台部署机器学习模型时,在java中加载模型,出现了该错误 原因:java的jar包版本与PMML文件的版本不相符,jar包的版本过低无法解析PMML文件.如果升级jar包,加载模 ...

  9. 箭头函数 函数中的this指向

      // 箭头函数         // 在匿名函数中,使用 => 箭头来替换 关键词 function          // 箭头定义下 () 和 {} 之间         // 等于在使 ...

  10. 混入 - Mixins

    混入(mixins)是一种分发Vue组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项. 混入分为:全局和局部 定义全局混 ...