[cfe-dev] Can't compile simple OpenMP code with clang 5.0.0 (original) (raw)
Johannes Doerfert via cfe-dev cfe-dev at lists.llvm.org
Tue Dec 22 18:02:52 PST 2020
- Previous message: [cfe-dev] Can't compile simple OpenMP code with clang 5.0.0
- Next message: [cfe-dev] Can't compile simple OpenMP code with clang 5.0.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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"? ~ JohannesOn 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 DISTRIBID=Ubuntu DISTRIBRELEASE=20.04 DISTRIBCODENAME=focal DISTRIBDESCRIPTION="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 " , ompgetthreadnum ()); } 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/libpthreadnonshared.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
andlibomp.so
are the ones shipped with clang 5. ~ JohannesI 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
- Previous message: [cfe-dev] Can't compile simple OpenMP code with clang 5.0.0
- Next message: [cfe-dev] Can't compile simple OpenMP code with clang 5.0.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]