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

Johannes Doerfert via cfe-dev cfe-dev at lists.llvm.org
Tue Dec 22 18:02:52 PST 2020


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
>   


More information about the cfe-dev mailing list