<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/113487>113487</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Odd flang OpenMP Linking Behavior
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mathomp4
</td>
</tr>
</table>
<pre>
All,
Last month, I built `flang-new` and I was able to build OpenMP code:
```
> flang-new --version
flang-new version 20.0.0git (git@github.com:GEOS-ESM/build-llvm-flang.git a62667f983fc27f97ed4658cc2beb288b00450c9)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /ford1/share/gmao_SIteam/llvm-flang/2024-09-06/bin
> flang-new -fopenmp test.F90
> OMP_NUM_THREADS=2 ./a.out
Hello from process: 0
Hello from process: 1
```
However, I built `flang-new` as of yesterday and:
```
> flang-new --version
flang version 20.0.0git (git@github.com:GEOS-ESM/build-llvm-flang.git 697744d14fec6505d07f95249388ac2452ee5151)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /ford1/share/gmao_SIteam/llvm-flang/2024-10-22/bin
> flang-new -fopenmp test.F90
flang-20: warning: OpenMP support in flang is still experimental [-Wexperimental-option]
/usr/bin/ld: cannot find /usr/lib64/libatomic.so.1.2.0
flang-20: error: linker command failed with exit code 1 (use -v to see invocation)
```
Now, I do have `libatomic.so.1.2.0` and it was around when I built `flang-new` with GCC 12.1.0 but it's the GCC 12 one:
```
> ls -1 /ford1/local/gcc/gcc-12.1.0/lib64/libatomic.*
/ford1/local/gcc/gcc-12.1.0/lib64/libatomic.a
/ford1/local/gcc/gcc-12.1.0/lib64/libatomic.la*
/ford1/local/gcc/gcc-12.1.0/lib64/libatomic.so@
/ford1/local/gcc/gcc-12.1.0/lib64/libatomic.so.1@
/ford1/local/gcc/gcc-12.1.0/lib64/libatomic.so.1.2.0*
```
and I have that in my `LD_LIBRARY_PATH`:
```
> echo $LD_LIBRARY_PATH
/ford1/share/gmao_SIteam/llvm-flang/2024-10-22/lib:/ford1/local/gcc/gcc-12.1.0/lib64:/home/mathomp4/lib
```
but it is not in `/usr/lib64`:
```
> ls -1 /usr/lib64/libatomic*
/usr/lib64/libatomic_ops_gpl.so.1@
/usr/lib64/libatomic_ops_gpl.so.1.1.2*
/usr/lib64/libatomic_ops.so.1@
/usr/lib64/libatomic_ops.so.1.1.1*
```
So if I build pointing to that:
```
> flang-new -fopenmp test.F90 -L/ford1/local/gcc/gcc-12.1.0/lib64 -latomic
flang-20: warning: OpenMP support in flang is still experimental [-Wexperimental-option]
> OMP_NUM_THREADS=2 ./a.out
Hello from process: 0
Hello from process: 1
```
My question is: why does `flang-new` seem to think `libatomic` is in `/usr/lib64`? The build couldn't have seen it there since it didn't exist there during the build. And it's not like `ldd` wants it there:
```
> ldd /ford1/share/gmao_SIteam/llvm-flang/2024-10-22/bin/flang-new
linux-vdso.so.1 (0x00007fff7bb0c000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000151cb7967000)
libquadmath.so.0 => /ford1/local/gcc/gcc-12.1.0/lib64/libquadmath.so.0 (0x0000151cb7722000)
librt.so.1 => /lib64/librt.so.1 (0x0000151cb751a000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000151cb7316000)
libz.so.1 => /lib64/libz.so.1 (0x0000151cb70fe000)
libzstd.so.1 => /lib64/libzstd.so.1 (0x0000151cb6e5a000)
libstdc++.so.6 => /ford1/local/gcc/gcc-12.1.0/lib64/libstdc++.so.6 (0x0000151cb6a44000)
libm.so.6 => /lib64/libm.so.6 (0x0000151cb66c2000)
libgcc_s.so.1 => /ford1/local/gcc/gcc-12.1.0/lib64/libgcc_s.so.1 (0x0000151cb64a4000)
libc.so.6 => /lib64/libc.so.6 (0x0000151cb60ce000)
/lib64/ld-linux-x86-64.so.2 (0x0000151cb7b87000)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWF1v47oR_TX0CyGBovVhPfjBWa_vBkhuFpsURZ8MShxZbChSV6Rs5_76gpKc-EMxNpttUSBQInN4eMg5c4YOM0ZsFMAcRTcoWk5Ya0vdzCtmS13V4STT_GW-kBLRL4gsEVn0zztmLK60siWiX_AtzlohLUYxKSRTG0_BDsUEM8XxLd4xg1kmAVvdxXH8UIO6_45zzQFNB0QUk-Gnf51-xa9Y2PO20BihVT_4NjB8jCnxiU82wmJEZxthUeheyjbzc12h6eKPrw-P3tfHe0RXHQVPym3ldTi-m8ViGsdJkc6mRU6TIk2Ah3E0y3OaQUZns4yQMCJ5imjaU3hizQYsmi7wfhav49Br1bPSO-VJodq9t1HtEFc2wDiuNAfpomttxL4fulXGMimBL0XjhhBdFbrhAaIrU7IGEF1tKqbXj7cWWIXo6o0zoitKaOiR1COx25NQo8dW6BpUVWMLxvqr9OhsH-6_r__8x_366duPr4vlI5ouKfYRXTFft7YPw99ASo2LRle4bnQOxjiamFwfDsbz2T2_6R1sobmqGYN1gV_AWGg4e3Ea-nWN_DZ9xGmShCEPwgLyOCIRJ0mRRjRMp7MZy2kYUYAoiIL_M30ExKP0w_roAyhxi-5Yo4TauD-HqjVtXevGYqF6JCwMNlZIiWFfQyMqUJZJjKIb75_Hn3i6ti470XKgQletaQZydCVdmnHOlNIWF0Jx_BogRRaH_W9mdSVy32g_8Kk_wheaRnenJYV6hgbnuqqcDRVMSOB4J2yJYS9sZz44cHJoDWBv69zJAGChtjpnHdNDLkel_Kfe9TLmGpdsC07IIwQHFxS2t8FGt4rjXQnq3QLoKP7x5QsOqB_4BGetxcIimhhsSxhGsFZXrVMa7AXHipE6Z9IpJs_7p9fDjx4voovXHP0SAPvcdMk-zcBoFJLPQvjBbwHphEDHk9W3yE5AtmRdVVUvThN3y_Xd7c2PxY9_rb8vnr65CVfyDXmpMaLh-axz7h81Dikyt-wHNt9Fl7pyqxxuEQPQ-8XUa9w5iat-odwBnJX_9f2_6v0dxzjW0zsha12b9aaWF3n_mXiX5J9c4yP4B-zgPfkcPx81FsVgKxzXWigr1Mb5mlPWTzbR846AvbsPZB97cjjv_2Uj-W9eZ67dZu5f8F8tGEcGiy56V75grsFcmLoBqPpMCPV80ircqDDva36Fn0oYcprrVnKFaGJ7xzAAytWNLaEBbITKwb1yMQTBXpjDKG-bTg0HMB8vur7UNRZXdVI8902M864NMWXNK_jV2uP8s3cTuno7reGA0_6itOVGd1XgOjXZE0JIUhRFkmUkJ4S89Wg3Iattd51yEwhG06Wjd1pbpxEHyCAK8ixJ4-QS8q-Wcedj55gf6wZnKKfrJpRertvYYdtju3gdPAWKAnYJxDuHouNAr4OnQNMgvgT6-wqhv0f5kAJGYIzl15Dehk_AYohGNmcszxG9QfTGzYl_OT8XOKdrszC8XLs6X_IIrxqFifORRG_yfG3OD-Rj7I8hTlcM2Qjx_ArxfJQ4yc8TeTyLD19q9rPYi8NRQWWz09I6uMiEz6c8naZsAvMgoWkSBHEUTsr5jJAiz6IEZhBOZzybFTQqIsoDkkKRAp-IuXORgNBpkNJkGvqc0SJKY0rDKCkgjVFIoGJC-s56fN1sJsKYFuZBMA1nyUSyDKTp_u1B6WBMFEXLSTPvvCprNwaFRApjzRuEFVbC_IHzoWUNrexOqGfnrjdQsq3QzaRt5Ly0tjb9fcjl7u3rZu-GB1OsG_1vyC2iq46fQXQ1UNzO6X8CAAD__8SDIG0">