计算化学公社

标题: suse中gcc升级报错 [打印本页]

作者
Author:
diaok    时间: 2016-8-12 17:18
标题: suse中gcc升级报错
发现gromacs更新到2016了
需要c++11的编译编译器
我用的系统是SUSE Linux Enterprise Server 11 SP2  (x86_64)
仿照这个安装gcc4.8.2
http://www.cnblogs.com/lizhenghn/p/3550996.html
帖子里也没什么实际内容
就是./contrib/download_prerequisites下载依赖库
然后安装
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

错误信息如下:
../../gcc/incpath.c(326): warning #1881: argument must be a constant null pointer value
        p->name = concat (sysroot, p->name + 1, NULL);
                                                ^

icpc -c   -g -DIN_GCC   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common  -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I/home/kjlv/software/gcc/gcc-4.8.2/build/./gmp -I/home/kjlv/software/gcc/gcc-4.8.2/gmp -I/home/kjlv/software/gcc/gcc-4.8.2/build/./mpfr -I/home/kjlv/software/gcc/gcc-4.8.2/mpfr -I/home/kjlv/software/gcc/gcc-4.8.2/mpc/src  -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc/../libbacktrace    ../../gcc/ipa-cp.c -o ipa-cp.o
icpc: command line warning #10006: ignoring unknown option '-Wmissing-format-attribute'
../../gcc/vec.h(1140): error: more than one instance of function "gt_ggc_mx" matches the argument list: (这里谷歌有个类似错误但没人回)
            function "gt_ggc_mx(edge_def *)"
            function "gt_ggc_mx(edge &)"
            argument types are: (edge)
      gt_ggc_mx ((*v));
      ^
          detected during instantiation of "void gt_ggc_mx(vec<T, va_gc, va_gc::default_layout> *) [with T=edge]" at line 833 of "gtype-desc.c"

../../gcc/vec.h(1160): error: more than one instance of function "gt_pch_nx" matches the argument list:
            function "gt_pch_nx(edge_def *)"
            function "gt_pch_nx(edge &)"
            argument types are: (edge)
      gt_pch_nx ((*v));
      ^
          detected during instantiation of "void gt_pch_nx(vec<T, A, vl_embed> *) [with T=edge, A=va_gc]" at line 3760 of "gtype-desc.c"

compilation aborted for gtype-desc.c (code 2)
make[3]: *** [gtype-desc.o] Error 2
make[3]: *** Waiting for unfinished jobs....
/bin/sh ../../gcc/../move-if-change tmp-automata.c insn-automata.c
echo timestamp > s-automata
rm gcc.pod

求助
要怎么解决?
或者有没有别的方法进行升级?
zypper suse13源里的能弄过来用吗?


作者
Author:
excalibur    时间: 2016-8-13 15:28
本帖最后由 excalibur 于 2016-8-13 15:30 编辑

曾经在OS X中编译过高版本的GNU编译器,我没有用download_prerequisites,而是直接下载了gmp, mpfr和mpc等依赖库,最后也编译成功了,似乎没有遇到你上面所说的问题。你可以仔细阅读下gcc的wiki,或者参照:http://stackoverflow.com/questio ... ithout-shared-libra

SUSE的升级服务是要收费的,或许付费用户能享受这种backports服务,我比较土鳖,不太了解。另外,你要升级,得从SUSE 11源里升级吧。

如果你的机器是集群并且没有买SUSE的服务,还是老老实实自己装个编译器吧。要是单机,或许可以考虑直接换个Linux发行版,简单粗暴。
作者
Author:
卡开发发    时间: 2016-8-13 15:42
icpc编译gcc的东西,感觉不和谐啊,换个g++看看?帖子中不是也是g++?

或者是在不行就intel编译器来编译gromacs,岂不是很好?
作者
Author:
diaok    时间: 2016-8-14 20:35
excalibur 发表于 2016-8-13 15:28
曾经在OS X中编译过高版本的GNU编译器,我没有用download_prerequisites,而是直接下载了gmp, mpfr和mpc等 ...

download_prerequisites就是把库装到他自己可以识别的地方了
不用自己再指定目录之类
最开始我也是分别安装的库
后来改成download_prerequisites之后还是出一样的错误

作者
Author:
diaok    时间: 2016-8-14 20:40
卡开发发 发表于 2016-8-13 15:42
icpc编译gcc的东西,感觉不和谐啊,换个g++看看?帖子中不是也是g++?

或者是在不行就intel编译器来编译 ...

非常感谢
我把makefile里面的icpc换了

改成g++编译一下就过了

为什么configure的时候没有自动识别出g++来?
是因为我的.bashrc里面有export CXX=icpc吗?

这种选择编译器是不建议放这里吗?
作者
Author:
卡开发发    时间: 2016-8-14 21:03
diaok 发表于 2016-8-14 20:40
非常感谢
我把makefile里面的icpc换了

对,是因为bashrc下面写了export CXX=icpc,不过也没关系,我自己一般configure之后会看看configure的信息,没有的话在configure的时候指定一下CXX=g++即可。

我自己习惯上还是把intel编译器的环境变量单独写到一个脚本里面,用的时候source一下,尤其是集群环境,很容易出现混乱。
作者
Author:
diaok    时间: 2016-8-15 10:15
卡开发发 发表于 2016-8-14 21:03
对,是因为bashrc下面写了export CXX=icpc,不过也没关系,我自己一般configure之后会看看configure的信 ...

另一台机器出了另一个问题
Found a compiler flag for AVX support, but some other problem exists.
  Update your assembler and/or linker, e.g.  in the binutils package of your
  distribution.
这是需要升级什么?
明明是一样的gcc编译器
作者
Author:
卡开发发    时间: 2016-8-15 10:50
diaok 发表于 2016-8-15 10:15
另一台机器出了另一个问题
Found a compiler flag for AVX support, but some other problem exists.
  ...

可能得更新binutils(ftp://ftp.gnu.org/pub/gnu/binutils/),你试试看更新这个有没有用。
作者
Author:
diaok    时间: 2016-8-15 17:16
卡开发发 发表于 2016-8-15 10:50
可能得更新binutils(ftp://ftp.gnu.org/pub/gnu/binutils/),你试试看更新这个有没有用。

装了binutils
然后这个binutils和gcc好像有依赖关系
重新安装了gcc4.8.2之后才终于编译成功。。

然而运行的时候还是有错。。
gmx: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.3' not found
装glibc又报错。。   换各种版本问题都一样
make[2]: *** No rule to make target '/home/kjlv/software/glibc-2.8/1/manual/stamp.o', needed by 'lib'.  Stop.




作者
Author:
卡开发发    时间: 2016-8-15 17:36
本帖最后由 卡开发发 于 2016-8-15 18:05 编辑
diaok 发表于 2016-8-15 17:16
装了binutils
然后这个binutils和gcc好像有依赖关系
重新安装了gcc4.8.2之后才终于编译成功。。

版本不太高的话GLIBC搞个RPM弄上去,这个就很简单了,不过你可能缺了一堆库没装,都有依赖关系,实在不行就挂个系统镜像来安装,先检查下系统是否支持RPM(按说SUSE是可以安装RPM的)。可能这台电脑一开始系统的开发库装的就比另外一台电脑要少。
上次帮一个家伙安装也是这样,也是SUSE系统,整个电脑一开始就没有GCC,只好RPM先装掉老的GCC和其他依赖的库,然后在手动更新GCC。





欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3