[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:22:29 PST 2020


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
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20201223/2c1a4170/attachment-0001.html>


More information about the cfe-dev mailing list