[cfe-users] libcxx.llvm.org linux build instructions unclear

Larry Evans cppljevans at suddenlink.net
Mon Jul 14 06:40:21 PDT 2014


On 07/13/2014 10:54 PM, Larry Evans wrote:
> On 07/10/2014 03:46 PM, Larry Evans wrote:
>> On 07/10/2014 03:23 PM, Jeffrey Walton wrote:
>>>> Unfortunately, when using libcxx with a hello_world.cpp, get missing
>>>> files:
>>>>
>>>> make
>>>> ls -ld /usr/local/lib/libc++*
>>>> lrwxrwxrwx 1 root root      11 Jul 10 12:45 /usr/local/lib/libc++.so ->
>>>> libc++.so.1
>>>> lrwxrwxrwx 1 root root      13 Jul 10 12:45
>>>> /usr/local/lib/libc++.so.1 ->
>>>> libc++.so.1.0
>>>> -rw-r--r-- 1 root root 1054759 Jul 10 11:53
>>>> /usr/local/lib/libc++.so.1.0
>>>> ls -ld /usr/local/include/c++/v1/../*
>>>> drwxr-xr-x 19 root root 4096 Jul  7 12:11
>>>> /usr/local/include/c++/v1/../4.9.0
>>>> drwxr-xr-x  5 root root 4096 Jul 10 12:45
>>>> /usr/local/include/c++/v1/../v1
>>>> /usr/local/bin/clang++ -std=c++11 -stdlib=libc++ -nostdinc
>>>> -I/usr/local/include/c++/v1 -I/usr/local/include/c++/v1/../4.9.0
>>>> -L/usr/local/lib hello_world.cpp -o hello_world.exe
>>>> In file included from hello_world.cpp:1:
>>>> /usr/local/include/c++/v1/../4.9.0/iostream:38:10: fatal error:
>>>> 'bits/c++config.h' file not found
>>>> #include <bits/c++config.h>
>>>>           ^
>>>> 1 error generated.
>>>> make: *** [run] Error 1
>>>>
>>>> Anyone have any ideas how to get libcxx to work on ubuntu?
>>>>
>>> Its a distant memory, but....
>>>
>>> I seem to recall I had to use -I to include the path to the correct
>>> headers like <bits/c++config.h>. This was on Debian with an updated
>>> Clang (I built and used 3.3 in /usr/local/bin, while Debian provided
>>> 3.1, IIRC).
>>>
>>> Jeff
>>>
>> Thanks Jeff.  That got me a little farther, but now missing other
>> files.  First had to add another -I for features.h, but now I'm
>> getting compile error as well as another missing file:
>>
>> make
>> ls -ld /usr/local/lib/libc++*
>> lrwxrwxrwx 1 root root      11 Jul 10 12:45 /usr/local/lib/libc++.so ->
>> libc++.so.1
>> lrwxrwxrwx 1 root root      13 Jul 10 12:45 /usr/local/lib/libc++.so.1
>> -> libc++.so.1.0
>> -rw-r--r-- 1 root root 1054759 Jul 10 11:53 /usr/local/lib/libc++.so.1.0
>> ls -ld /usr/local/include/c++/v1/../*
>> drwxr-xr-x 19 root root 4096 Jul  7 12:11
>> /usr/local/include/c++/v1/../4.9.0
>> drwxr-xr-x  5 root root 4096 Jul 10 12:45 /usr/local/include/c++/v1/../v1
>> /usr/local/bin/clang++ -std=c++11 -stdlib=libc++ -nostdinc
>> -I/usr/local/include/c++/v1
>> -I/usr/local/include/c++/4.9.0/x86_64-unknown-linux-gnu
>> -I/usr/local/include/c++/4.9.0 -I/usr/local/include/c++/4.9.0/parallel
>> -L/usr/local/lib hello_world.cpp -o hello_world.exe
>> In file included from hello_world.cpp:1:
>> In file included from /usr/local/include/c++/4.9.0/iostream:38:
>> In file included from
>> /usr/local/include/c++/4.9.0/x86_64-unknown-linux-gnu/bits/c++config.h:430:
>>
>> /usr/local/include/c++/4.9.0/x86_64-unknown-linux-gnu/bits/os_defines.h:44:19:
>>
>> error: token is not a valid binary operator in a
>>        preprocessor subexpression
>> #if __GLIBC_PREREQ(2,15) && defined(_GNU_SOURCE)
>>      ~~~~~~~~~~~~~~^
>> In file included from hello_world.cpp:1:
>> In file included from /usr/local/include/c++/4.9.0/iostream:39:
>> In file included from /usr/local/include/c++/4.9.0/ostream:38:
>> In file included from /usr/local/include/c++/4.9.0/ios:38:
>> In file included from /usr/local/include/c++/4.9.0/iosfwd:40:
>> In file included from /usr/local/include/c++/4.9.0/bits/postypes.h:40:
>> /usr/local/include/c++/4.9.0/cwchar:44:10: fatal error: 'wchar.h' file
>> not found
>> #include <wchar.h>
>>           ^
>> 2 errors generated.
>> make: *** [run] Error 1
>>
>> Compilation exited abnormally with code 2 at Thu Jul 10 15:42:43
>>
>> -regards,
>> Larry
> I cleared the build directory and started over.  The difference this
> time was I specified the CC= (in addition to the CXX=.  IOW:
>
> CC=clang CXX=clang++ cmake -G "Unix Makefiles"
> -DLIBCXX_CXX_ABI=libstdc++
> -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="/usr/local/include/c++/4.9.0/;/usr/local/include/c++/4.9.0/x86_64-unknown-linux-gnu/"
> -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ../..
>
> where the last ../.. is the libcxx source.
>
> I also had to add -Wl,-lstdc++ to the link command when
> compiling&linking a hello_world.cpp program.  This avoided
> this link error:
>
> /usr/local/bin/clang++ -std=c++1y -stdlib=libc++ hello_world.cpp -o
> hello_world.exe
>      /usr/bin/ld: /tmp/hello_world-3c8536.o: undefined reference to
> symbol '__cxa_free_exception@@CXXABI_1.3'
>      //usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols:
> DSO missing from command line
>      clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
>
> Hope this helps someone else.
>
> -regards,
> Larry
CORRECTION:

For some unknown reason, the same hello_world.cpp program is no longer
linking because `GNU ld` can't find the libc++.so even though it's
there, as shown by:

make -k
ls -ld /usr/local/lib/libc++*
lrwxrwxrwx 1 root root      11 Jul 10 12:45 /usr/local/lib/libc++.so -> 
libc++.so.1
lrwxrwxrwx 1 root root      13 Jul 10 12:45 /usr/local/lib/libc++.so.1 
-> libc++.so.1.0
-rw-r--r-- 1 root root 1039766 Jul 13 20:57 /usr/local/lib/libc++.so.1.0
ls -ld /usr/local/include/c++/v1/../*
drwxr-xr-x 19 root root 4096 Jul  7 12:11 /usr/local/include/c++/v1/../4.9.0
drwxr-xr-x  5 root root 4096 Jul 13 20:59 /usr/local/include/c++/v1/../v1
/usr/local/bin/clang++ -std=c++1y -stdlib=libc++ -Wl,-lstdc++ -Wl,-v 
hello_world.cpp -o hello_world.exe
GNU ld (GNU Binutils for Ubuntu) 2.24
./hello_world.exe
./hello_world.exe: error while loading shared libraries: libc++.so.1: 
cannot open shared object file: No such file or directory
make: *** [run] Error 127

Compilation exited abnormally with code 2 at Mon Jul 14 08:37:17

Anyone have any idea what's going on?

-regards,
Larry





More information about the cfe-users mailing list