如何查看我的gcc版本?

时间:2016-02-08 12:40:05

标签: c++ gcc centos7 g++4.8

In file included from /usr/include/c++/4.8.2/locale:41:0,
                 from /usr/include/c++/4.8.2/iomanip:43,
                 from [...omitted by myself as it is irrelevant]
/usr/include/c++/4.8.2/bits/locale_facets_nonio.h:59:39: error: ‘locale’ has not been declared
     struct __timepunct_cache : public locale::facet

以上是我的构建日志中的第一个错误。

我自己并没有尝试编译glibc / gcc,而是通过yum安装它们。

我找到的一件可疑的事情是:

$ ll /usr/include/c++/
total 4
drwxr-xr-x. 12 root root 4096 Dec 17 14:16 4.8.2
lrwxrwxrwx   1 root root    5 Dec 17 14:16 4.8.5 -> 4.8.2
$

yum只显示了一个版本的gcc:

$ yum info gcc-c++
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.uhost.hk
 * epel: mirrors.hustunique.com
 * extras: centos.uhost.hk
 * updates: centos.uhost.hk
Installed Packages
Name        : gcc-c++
Arch        : x86_64
Version     : 4.8.5
Release     : 4.el7
Size        : 16 M
Repo        : installed
From repo   : base
Summary     : C++ support for GCC
URL         : http://gcc.gnu.org
License     : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Description : This package adds C++ support to the GNU Compiler Collection.
            : It includes support for most of the current C++ specification,
            : including templates and exception handling.

任何想法如何验证/usr/include/c++/4.8.2中的标题确实来自4.8.5包?

提前致谢。

P.S。我想可能glibc是无关紧要的,但这里是信息:

$ ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

3 个答案:

答案 0 :(得分:5)

4.8.2目录的符号链接无需担心,红帽企业Linux(以及CentOS)上的libstdc ++标题的排列是正常的。

gcc --version会告诉您路径中gcc可执行文件的版本。

rpm -q libstdc++-devel将告诉您拥有C ++标准库头的软件包的版本。

rpm -ql libstdc++-devel将列出该软件包安装的文件,其中包含/usr/include/c++/4.8.2下的文件

rpm --verify libstdc++-devel会检查您是否因为用其他内容替换了C ++标题而搞砸了。

错误更令人担忧,这意味着你搞砸了某事。我的猜测是在from [...omitted by myself as it is irrelevant]部分,这实际上可能非常相关。 std::locale应该在<bits/locale_classes.h>之前声明<bits/locale_facets_nonio.h>,但如果没有声明我的猜测是你有一些定义_LOCALE_CLASSES_H的标题并阻止要读取的标准库头。 定义包含以下划线开头的警卫,它们是reserved names

答案 1 :(得分:1)

我不太确定,但下面是更多信息

Stackoverflow: version of libc

$ /lib/x86_64-linux-gnu/libc.so.6 
GNU C Library (Ubuntu EGLIBC 2.19-0ubuntu6) stable release version 2.19, by Roland McGrath et al.
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.8.2.
Compiled on a Linux 3.13.9 system on 2014-04-12.
Available extensions:
    crypt add-on version 2.1 by Michael Glad and others
    GNU Libidn by Simon Josefsson
    Native POSIX Threads Library by Ulrich Drepper et al
    BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/eglibc/+bugs>.
mandar@ubuntu:~/Desktop$ 

答案 2 :(得分:0)

由于您使用的是Linux,因此可以尝试

 ldd --version