[cfe-dev] Help: compiler's error using -stdlib=libc++ with clang++-3.8

zosrothko via cfe-dev cfe-dev at lists.llvm.org
Sun Jul 23 10:19:25 PDT 2017


Le 23/07/2017 à 18:34, Richard Smith a écrit :
> On 22 Jul 2017 12:52 pm, "zosrothko via cfe-dev" 
> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>
>
>
>     Le 22/07/2017 à 15:07, Richard Smith a écrit :
>>     Based on the errors, I would guess that the offsetof macro is not
>>     defined. Maybe there's something wrong with your include path?
>     Thanks for answering, but this code compiles fine with this
>     command below, thus I do not understand your point on the include
>     path? (there is no private includes in this code)
>
>     clang++-3.8 -std=c++11 bug.cpp
>
>
>
> Include path problems can show up with -stdlib=libc++ because it 
> changes the include path, and because libc++ makes different use of 
> #include_next than libstdc++. Please add -v to the failing command and 
> tell us the include path that is printed.
fandre at ubuntu-trusty-64:~/clang$ clang++-3.8 -std=c++11 -v 
-stdlib=libc++ bug.cpp
clang version 3.8.0-2ubuntu3~trusty4 (tags/RELEASE_380/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8.5
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.4
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.1.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.1.0
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.1
Candidate multilib: .;@m64
Selected multilib: .;@m64
  "/usr/lib/llvm-3.8/bin/clang" -cc1 -triple x86_64-unknown-linux-gnu 
-emit-obj -mrelax-all -disable-free -disable-llvm-verifier 
-main-file-name bug.cpp -mrelocation-model static -mthread-model posix 
-mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases 
-munwind-tables -fuse-init-array -target-cpu x86-64 -v 
-dwarf-column-info -debugger-tuning=gdb -resource-dir 
/usr/lib/llvm-3.8/bin/../lib/clang/3.8.0 -internal-isystem 
/usr/include/c++/v1 -internal-isystem /usr/local/include 
-internal-isystem /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include 
-internal-externc-isystem /usr/include/x86_64-linux-gnu 
-internal-externc-isystem /include -internal-externc-isystem 
/usr/include -std=c++11 -fdeprecated-macro -fdebug-compilation-dir 
/home/fandre/clang -ferror-limit 19 -fmessage-length 158 
-fobjc-runtime=gcc -fcxx-exceptions -fexceptions 
-fdiagnostics-show-option -fcolor-diagnostics -o /tmp/bug-10e224.o -x 
c++ bug.cpp
clang -cc1 version 3.8.0 based upon LLVM 3.8.0 default target 
x86_64-unknown-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
  /usr/include/c++/v1
  /usr/local/include
  /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include
  /usr/include/x86_64-linux-gnu
  /usr/include
End of search list.
bug.cpp:56:88: error: 'Header' does not refer to a value
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, code) == 0x01)>)> poco_static_assert_typedef_53 __attri...
^
bug.cpp:45:9: note: declared here
  struct Header
         ^
bug.cpp:56:96: error: use of undeclared identifier 'code'
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, code) == 0x01)>)> poco_static_assert_typedef_53 __attri...
^
bug.cpp:56:111: error: type name requires a specifier or qualifier
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, code) == 0x01)>)> poco_static_assert_typedef_53 __attri...
^
bug.cpp:57:88: error: 'Header' does not refer to a value
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, checksum) == 0x02)>)> poco_static_assert_typedef_54 __a...
^
bug.cpp:45:9: note: declared here
  struct Header
         ^
bug.cpp:57:96: error: use of undeclared identifier 'checksum'
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, checksum) == 0x02)>)> poco_static_assert_typedef_54 __a...
^
bug.cpp:57:115: error: type name requires a specifier or qualifier
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, checksum) == 0x02)>)> poco_static_assert_typedef_54 __a...
^
bug.cpp:58:88: error: 'Header' does not refer to a value
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, id) == 0x04)>)> poco_static_assert_typedef_55 __attribu...
^
bug.cpp:45:9: note: declared here
  struct Header
         ^
bug.cpp:58:96: error: use of undeclared identifier 'id'
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, id) == 0x04)>)> poco_static_assert_typedef_55 __attribu...
^
bug.cpp:58:109: error: type name requires a specifier or qualifier
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, id) == 0x04)>)> poco_static_assert_typedef_55 __attribu...
^
bug.cpp:59:88: error: 'Header' does not refer to a value
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, seq) == 0x06)>)> poco_static_assert_typedef_56 __attrib...
^
bug.cpp:45:9: note: declared here
  struct Header
         ^
bug.cpp:59:96: error: use of undeclared identifier 'seq'
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, seq) == 0x06)>)> poco_static_assert_typedef_56 __attrib...
^
bug.cpp:59:110: error: type name requires a specifier or qualifier
  typedef 
poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool) 
(offsetof(Header, seq) == 0x06)>)> poco_static_assert_typedef_56 __attrib...
^
12 errors generated.
fandre at ubuntu-trusty-64:~/clang$

>>     On 22 Jul 2017 3:54 am, "zosrothko via cfe-dev"
>>     <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>>
>>         Hello CFE list
>>
>>         Sorry to post again this post, but I am really stacked on
>>         this problem.
>>
>>         I have an issue compiling a small c++ program with
>>         clang++-3.8 on Ubuntu trusty
>>
>>         Using the joined c++ program bug.cpp,
>>
>>           * clang++-3.8 -std=c++11 bug.cpp compiles fine while
>>           * clang++-3.8 -std=c++11 -stdlib=libc++ bug.cpp produces
>>             invalid compile errors.
>>
>>
>>         What could be the problem and how can it be solved?
>>
>>         TIA
>>
>>         fandre at ubuntu-trusty-64:~/clang$ uname -a
>>         Linux ubuntu-trusty-64 4.4.0-83-generic #106~14.04.1-Ubuntu
>>         SMP Mon Jun 26 18:10:19 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
>>         fandre at ubuntu-trusty-64:~/clang$ clang++-3.8 --version
>>         clang version 3.8.0-2ubuntu3~trusty4 (tags/RELEASE_380/final)
>>         Target: x86_64-unknown-linux-gnu
>>         Thread model: posix
>>         InstalledDir: /usr/bin
>>
>>         Below is the console log
>>
>>         fandre at ubuntu-trusty-64:~/clang$ clang++-3.8 -std=c++11 bug.cpp
>>         fandre at ubuntu-trusty-64:~/clang$ clang++-3.8 -std=c++11
>>         -stdlib=libc++ bug.cpp
>>         bug.cpp:56:88: error: 'Header' does not refer to a value
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, code) == 0x01)>)> poco_...
>>         ^
>>         bug.cpp:45:9: note: declared here
>>          struct Header
>>                 ^
>>         bug.cpp:56:96: error: use of undeclared identifier 'code'
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, code) == 0x01)>)> poco_...
>>         ^
>>         bug.cpp:56:111: error: type name requires a specifier or
>>         qualifier
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, code) == 0x01)>)> poco_...
>>         ^
>>         bug.cpp:57:88: error: 'Header' does not refer to a value
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, checksum) == 0x02)>)> p...
>>         ^
>>         bug.cpp:45:9: note: declared here
>>          struct Header
>>                 ^
>>         bug.cpp:57:96: error: use of undeclared identifier 'checksum'
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, checksum) == 0x02)>)> p...
>>         ^
>>         bug.cpp:57:115: error: type name requires a specifier or
>>         qualifier
>>          
>>         ...poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, checksum) == 0x02)>)> poco_stati...
>>         ^
>>         bug.cpp:58:88: error: 'Header' does not refer to a value
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, id) == 0x04)>)> poco_st...
>>         ^
>>         bug.cpp:45:9: note: declared here
>>          struct Header
>>                 ^
>>         bug.cpp:58:96: error: use of undeclared identifier 'id'
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, id) == 0x04)>)> poco_st...
>>         ^
>>         bug.cpp:58:109: error: type name requires a specifier or
>>         qualifier
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, id) == 0x04)>)> poco_st...
>>         ^
>>         bug.cpp:59:88: error: 'Header' does not refer to a value
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, seq) == 0x06)>)> poco_s...
>>         ^
>>         bug.cpp:45:9: note: declared here
>>          struct Header
>>                 ^
>>         bug.cpp:59:96: error: use of undeclared identifier 'seq'
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, seq) == 0x06)>)> poco_s...
>>         ^
>>         bug.cpp:59:110: error: type name requires a specifier or
>>         qualifier
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, seq) == 0x06)>)> poco_s...
>>         ^
>>         12 errors generated.
>>         fandre at ubuntu-trusty-64:~/clang$ cp bug.cpp ../shared
>>         fandre at ubuntu-trusty-64:~/clang$ clang++-3.8 -std=c++11 bug.cpp
>>         fandre at ubuntu-trusty-64:~/clang$ clang++-3.8 -std=c++11
>>         -stdlib=libc++ bug.cpp
>>         bug.cpp:56:88: error: 'Header' does not refer to a value
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, code) == 0x01)>)> poco_...
>>         ^
>>         bug.cpp:45:9: note: declared here
>>          struct Header
>>                 ^
>>         bug.cpp:56:96: error: use of undeclared identifier 'code'
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, code) == 0x01)>)> poco_...
>>         ^
>>         bug.cpp:56:111: error: type name requires a specifier or
>>         qualifier
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, code) == 0x01)>)> poco_...
>>         ^
>>         bug.cpp:57:88: error: 'Header' does not refer to a value
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, checksum) == 0x02)>)> p...
>>         ^
>>         bug.cpp:45:9: note: declared here
>>          struct Header
>>                 ^
>>         bug.cpp:57:96: error: use of undeclared identifier 'checksum'
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, checksum) == 0x02)>)> p...
>>         ^
>>         bug.cpp:57:115: error: type name requires a specifier or
>>         qualifier
>>          
>>         ...poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, checksum) == 0x02)>)> poco_stati...
>>         ^
>>         bug.cpp:58:88: error: 'Header' does not refer to a value
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, id) == 0x04)>)> poco_st...
>>         ^
>>         bug.cpp:45:9: note: declared here
>>          struct Header
>>                 ^
>>         bug.cpp:58:96: error: use of undeclared identifier 'id'
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, id) == 0x04)>)> poco_st...
>>         ^
>>         bug.cpp:58:109: error: type name requires a specifier or
>>         qualifier
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, id) == 0x04)>)> poco_st...
>>         ^
>>         bug.cpp:59:88: error: 'Header' does not refer to a value
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, seq) == 0x06)>)> poco_s...
>>         ^
>>         bug.cpp:45:9: note: declared here
>>          struct Header
>>                 ^
>>         bug.cpp:59:96: error: use of undeclared identifier 'seq'
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, seq) == 0x06)>)> poco_s...
>>         ^
>>         bug.cpp:59:110: error: type name requires a specifier or
>>         qualifier
>>          typedef
>>         poco_static_assert_test<sizeof(POCO_STATIC_ASSERTION_FAILURE<(bool)
>>         (offsetof(Header, seq) == 0x06)>)> poco_s...
>>         ^
>>         12 errors generated.
>>         fandre at ubuntu-trusty-64:~/clang$
>>
>>
>>         _______________________________________________
>>         cfe-dev mailing list
>>         cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>>         http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>         <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
>>
>
>
>     _______________________________________________
>     cfe-dev mailing list
>     cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>     <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170723/3cd45ff2/attachment.html>


More information about the cfe-dev mailing list