[Bug 1244021] Re: After upgrading to 13.10, clang and GCC erroneously look for GCC-4.7 headers

Horst Schirmeier horst at schirmeier.com
Fri Oct 25 08:06:47 UTC 2013


Cannot reproduce. I'm using 13.10 (x86_64; was upgraded from several
earlier releases), only gcc-4.8 and clang-3.2 is installed.

$ clang++ a.cpp
$ g++ a.cpp
$ clang++ --version
Debian clang version 3.2-7ubuntu1 (tags/RELEASE_32/final) (based on LLVM 3.2)
Target: x86_64-pc-linux-gnu
Thread model: posix
$ g++ --version
g++ (Ubuntu/Linaro 4.8.1-10ubuntu8) 4.8.1
Copyright (C) 2013 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.

gcc seems to use the correct include paths here (see attachment).

** Attachment added: "g++ include paths (g++ -E -x c++ - -v < /dev/null)"
   https://bugs.launchpad.net/ubuntu/+source/gcc-4.8/+bug/1244021/+attachment/3890804/+files/gcc-include-paths.txt

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-4.8 in Ubuntu.
https://bugs.launchpad.net/bugs/1244021

Title:
  After upgrading to 13.10, clang and GCC erroneously look for GCC-4.7
  headers

Status in “gcc-4.8” package in Ubuntu:
  New

Bug description:
  I'm a Firefox developer.  13.04 was working fine.  I upgraded to 13.10
  and now I can't compile Firefox with either clang or GCC.

  Here's a reduced test case:

    #include <memory>
    int main(void) {}

  If I compile this with clang I get this:

  [fjord:~/moz/mi5] clang++ a.cpp
  In file included from a.cpp:1:
  In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/memory:62:
  /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/allocator.h:92:29: error: 
        unknown template name '__allocator_base'
      class allocator: public __allocator_base<_Tp>
                              ^
  /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/allocator.h:116:25: error: 
        expected '('
        : __allocator_base<_Tp>(__a) { }
                          ^
  /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/allocator.h:116:25: error: 
        expected '{' or ','
  3 errors generated.

  The results with GCC are similar.

  I found the problem is that both clang and GCC are somehow configured
  to look for some GCC 4.7 headers as well as GCC 4.8 headers -- both of
  them have |-I/usr/lib/gcc/x86_64-linux-
  gnu/4.7/../../../../include/x86_64-linux-gnu/c++/4.7| hardwired in the
  default flags.

  As a workaround, I renamed /usr/include/c++/4.7/ and
  /usr/include/x86_64-linux-gnu/c++/4.7/ so the compilers could no
  longer find them, and now things are working normally.  But obviously
  this should be fixed properly.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-4.8/+bug/1244021/+subscriptions



More information about the foundations-bugs mailing list