最近需要在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
安装成功。