[cfe-dev] Can't compile simple OpenMP code with clang 5.0.0

Керим Хемраев via cfe-dev cfe-dev at lists.llvm.org
Tue Dec 22 18:38:18 PST 2020


Hi Alexey,
 
The command:
$ echo $LIBRARY_PATH
 
gives me void.
 
So I tried to set LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:
 
$ LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
$ echo $LIBRARY_PATH
/usr/lib/x86_64-linux-gnu
 
But it seems that the compiler still can’t find the neccessary library:
$ clang++ -fopenmp foo.cxx -I/home/../usr/lib/llvm-10/include/openmp/ -L/home/../usr/lib/llvm-10/lib
 
gives me:
/usr/bin/ld: cannot find /lib64/libpthread.so.0
/usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a
clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
 
  
>Среда, 23 декабря 2020, 5:27 +03:00 от Alexey Bataev <a.bataev at hotmail.com>:
> 
>Try to add this path to LIBRARY_PATH env var. 
> 
>Best regards,
>Alexey Bataev
>  
>>22 дек. 2020 г., в 21:22, Керим Хемраев via cfe-dev < cfe-dev at lists.llvm.org > написал(а):
>> 
>>Thank you very much!
>> 
>>I’ve figured out that I have  libpthread.so.0  in  /usr/lib/x86_64-linux-gnu
>> 
>>So I can compile it with command:
>>$ clang++ -fopenmp foo.cxx -I/home/../usr/lib/llvm-10/include/openmp/ -L/home/../usr/lib/llvm-10/lib -L/home/../usr/lib/x86_64-linux-gnu
>> 
>>Is there a way to change that  /usr/bin/ld looks for  libpthread.so.0 in  /usr/lib/x86_64-linux-gnu instead of  /lib64  ?
>>  
>>>Среда, 23 декабря 2020, 5:13 +03:00 от Johannes Doerfert < johannesdoerfert at gmail.com >:
>>> 
>>>Maybe install libpthread-dev?
>>>
>>>
>>>On 12/22/20 8:07 PM, Керим Хемраев wrote:
>>>> Yes, it is
>>>>
>>>> The command:
>>>>
>>>> $ clang++ -fopenmp foo.cxx -I/home/../usr/lib/llvm-10/include/openmp/ -L/home/../usr/lib/llvm-10/lib
>>>>
>>>> gives the error:
>>>> /usr/bin/ld: cannot find /lib64/libpthread.so.0
>>>> /usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a
>>>> clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
>>>>
>>>>
>>>>
>>>>> Среда, 23 декабря 2020, 5:02 +03:00 от Johannes Doerfert < johannesdoerfert at gmail.com >:
>>>>>
>>>>> Ok, closer. is there a symlink from libomp.so to libomp.so.5 in
>>>>> /home/../usr/lib/llvm-10/lib ?
>>>>> If not, create one. Then try:
>>>>>
>>>>> clang++ -fopenmp foo.cxx -I/home/../usr/lib/llvm-10/include/openmp/ -L/home/../usr/lib/llvm-10/lib
>>>>>
>>>>>
>>>>>
>>>>> On 12/22/20 8:00 PM, Керим Хемраев wrote:
>>>>>> $ clang++ -fopenmp foo.cxx
>>>>>>
>>>>>> gives:
>>>>>> foo.cxx:2:10: fatal error: 'omp.h' file not found
>>>>>> #include "omp.h"
>>>>>>          ^~~~~~~
>>>>>> 1 error generated.
>>>>>>
>>>>>>
>>>>>> Then I try:
>>>>>>
>>>>>> $ clang++ -fopenmp foo.cxx -I/home/../usr/lib/llvm-10/include/openmp/
>>>>>>
>>>>>> this produces the error:
>>>>>> /usr/bin/ld: cannot find -lomp
>>>>>> clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
>>>>>>
>>>>>> The dir:  -I/home/../usr/lib/llvm-10/include/openmp/ contains omp.h
>>>>>>
>>>>>>> Среда, 23 декабря 2020, 4:56 +03:00 от Johannes Doerfert <  johannesdoerfert at gmail.com >:
>>>>>>>
>>>>>>> -fopenmp will add the -lomp, which will look for libomp.so in your
>>>>>>> library path.
>>>>>>>
>>>>>>> Again, libomp.so versioning is not related to clang versioning.
>>>>>>>
>>>>>>> What is the output of
>>>>>>>
>>>>>>> clang++ -fopenmp foo.cxx
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 12/22/20 7:33 PM, Керим Хемраев wrote:
>>>>>>>> It seems I know where is my fault (it
>>>>>>>>
>>>>>>>>
>>>>>>>> using clang 5.0 with libomp.so.5 is probably not going to work.
>>>>>>>>
>>>>>>>> is was very obvious) but I can’t understand how can I link external library to clang.
>>>>>>>>
>>>>>>>> In the folder  /home/../usr/lib/llvm-10/lib I have a file called  libomp.so.5 (as I understood it is a library of version 5)   and I strongly believe that I need to link this library when parsing commands to clang++:
>>>>>>>>
>>>>>>>> $ clang++ -fopenmp foo.cxx -I/home/../usr/lib/llvm-10/include/openmp/ -L/home/../usr/lib/llvm-10/lib libomp.so.5
>>>>>>>>
>>>>>>>> gives me error:
>>>>>>>> clang-5.0: error: no such file or directory: 'libomp.so.5'
>>>>>>>>
>>>>>>>> How to link  libomp.so.5 ? Can’t find it in google yet
>>>>>>>>
>>>>>>>>
>>>>>>>>> Среда, 23 декабря 2020, 2:33 +03:00 от Johannes Doerfert <  johannesdoerfert at gmail.com >:
>>>>>>>>>
>>>>>>>>> I think libomp is still on version 5.0, (I know, I know).
>>>>>>>>> It is not coupled to LLVM wrt. version numbers.
>>>>>>>>>
>>>>>>>>> Last time I checked, LLVM build for debian (and Ububuntu)
>>>>>>>>> came bundled with the OpenMP runtimes (for the host). That
>>>>>>>>> means you should not need libomp-5-dev but just clang-10.
>>>>>>>>> libomp-5-dev is useful if you *don't* want clang but still
>>>>>>>>> target libomp, which is the LLVM OpenMP host runtime, from
>>>>>>>>> gcc, thus use it as a replacement of libgomp.
>>>>>>>>>
>>>>>>>>> All that said, doesn't `clang-10 -fopenmp ...` "just work"?
>>>>>>>>>
>>>>>>>>> ~ Johannes
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 12/22/20 5:28 PM, Керим Хемраев wrote:
>>>>>>>>>> Hi Johannes,
>>>>>>>>>>
>>>>>>>>>> Thank you for response
>>>>>>>>>>
>>>>>>>>>> It seems that I don’t have   libthread. Moreover it is highly likely that omp.h and libomp.so that I used to provide as parameters to clang are not shipped with clang 5 :)
>>>>>>>>>>
>>>>>>>>>> I think I should now forget about xeus-cling for a while and simply build the code with latest (or any) version of clang with OpenMP.
>>>>>>>>>>
>>>>>>>>>> I’ve tried to do the following:
>>>>>>>>>> $ sudo apt-get install clang-10
>>>>>>>>>> $ sudo apt-get install libomp-5-dev
>>>>>>>>>>
>>>>>>>>>> Now I want to find where are these packages were installed:
>>>>>>>>>> $ find  /usr -iname clang-10
>>>>>>>>>> /usr/lib/llvm-10/bin/clang-10
>>>>>>>>>> /usr/lib/cmake/clang-10
>>>>>>>>>> /usr/share/doc/clang-10
>>>>>>>>>> /usr/share/bash-completion/completions/clang-10
>>>>>>>>>> /usr/share/lintian/overrides/clang-10
>>>>>>>>>> /usr/bin/clang-10
>>>>>>>>>>
>>>>>>>>>> $ find  /usr -iname libomp-10-dev
>>>>>>>>>> /usr/share/doc/libomp-10-dev
>>>>>>>>>>
>>>>>>>>>> So I’m afraid that  libomp-10-dev  contains only some docs and there is no library   libomp-10-dev.so (or something)
>>>>>>>>>>
>>>>>>>>>> Could you please guide me how to properly install clang with OpenMP that I could build my test script?
>>>>>>>>>>
>>>>>>>>>> I’m on Ubuntu  20.04, x64
>>>>>>>>>> $ cat /etc/lsb-release
>>>>>>>>>> DISTRIB_ID=Ubuntu
>>>>>>>>>> DISTRIB_RELEASE=20.04
>>>>>>>>>> DISTRIB_CODENAME=focal
>>>>>>>>>> DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
>>>>>>>>>>
>>>>>>>>>>> Среда, 23 декабря 2020, 0:48 +03:00 от Johannes Doerfert <  johannesdoerfert at gmail.com >:
>>>>>>>>>>>
>>>>>>>>>>> Hi Kerim,
>>>>>>>>>>>
>>>>>>>>>>> I tried to help below. Looking at xeus-cling I did not immediately see
>>>>>>>>>>> why clang 5 is
>>>>>>>>>>> required. If this doesn't work as described below, I might spend time
>>>>>>>>>>> trying to get it
>>>>>>>>>>> to run with clang 11 ;)
>>>>>>>>>>>
>>>>>>>>>>> On 12/22/20 1:57 PM, Керим Хемраев via cfe-dev wrote:
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> I’m struggling with compiling simple OpenMP program with clang 5.0.0.
>>>>>>>>>>>> Here is the code (foo.cxx):
>>>>>>>>>>>>
>>>>>>>>>>>> #include   "omp.h"
>>>>>>>>>>>> #include   <stdio.h>
>>>>>>>>>>>> int   main ( void ) {
>>>>>>>>>>>>    #pragma   omp   parallel
>>>>>>>>>>>>    printf ( "thread %d \n " ,  omp_get_thread_num ());
>>>>>>>>>>>> }
>>>>>>>>>>>>
>>>>>>>>>>>> As I use clang as part of xeus-cling my clang installation is inside conda packages:
>>>>>>>>>>>> $ which clang
>>>>>>>>>>>> /home/tasik/miniconda3/envs/cling/bin/clang
>>>>>>>>>>>>
>>>>>>>>>>>> As this clang package does’t have omp.h I provide additional directories to find omp.h and libomp.so
>>>>>>>>>>>> To compile the code I use the command:
>>>>>>>>>>>> $ clang -fopenmp -I/home/../usr/lib/llvm-10/include/openmp/ -L/home/../usr/lib/llvm-10/lib foo.cxx
>>>>>>>>>>>>
>>>>>>>>>>>> And I get errors:
>>>>>>>>>>>> /usr/bin/ld: cannot find /lib64/libpthread.so.0
>>>>>>>>>>>> /usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a
>>>>>>>>>>>> clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
>>>>>>>>>>> The error basically means clang looks for the libthread libraries and
>>>>>>>>>>> cannot find them.
>>>>>>>>>>> Check on you system where they are and provide the path via -L to clang.
>>>>>>>>>>> That might allow
>>>>>>>>>>> you to proceed. That said, I don't think you are able to mix clang 5 and
>>>>>>>>>>> llvm 10 as you
>>>>>>>>>>> do now. The headers and libraries clang might pick up need to be
>>>>>>>>>>> consistent (with the clang
>>>>>>>>>>> version). At least, you need to make sure `omp.h` and `libomp.so` are
>>>>>>>>>>> the ones shipped with
>>>>>>>>>>> clang 5.
>>>>>>>>>>>
>>>>>>>>>>> ~ Johannes
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> I really need some help to undertand how to work with clang 5.0.0 OpenMP
>>>>>>>>>>>> And I think that it is difficult to update clang’s version as xeus-cling requires mentioned 5.0.0 version...
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> With respect,
>>>>>>>>>>>> kerim
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> cfe-dev mailing list
>>>>>>>>>>>>  cfe-dev at lists.llvm.org
>>>>>>>>>>>>  https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>>>>>>>> С уважением,
>>>>>>>>>> Керим Хемраев
>>>>>>>>>>  kerim.khemraev at mail.ru
>>>>>>>>>>
>>>>>>>> С уважением,
>>>>>>>> Керим Хемраев
>>>>>>>>  kerim.khemraev at mail.ru
>>>>>>>>
>>>>>>
>>>>>> С уважением,
>>>>>> Керим Хемраев
>>>>>>  kerim.khemraev at mail.ru
>>>>>>
>>>>
>>>>
>>>> С уважением,
>>>> Керим Хемраев
>>>>  kerim.khemraev at mail.ru
>>>>
>> 
>> 
>>С уважением,
>>Керим Хемраев
>>kerim.khemraev at mail.ru
>>  
 
 
С уважением,
Керим Хемраев
kerim.khemraev at mail.ru
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20201223/218840c8/attachment-0001.html>


More information about the cfe-dev mailing list