我已经从Debian Jessie和Fedora 24的基本存储库安装了clang 3.8。当我尝试用clang ++编译一个简单的HelloWorld.cpp测试程序时,我传递-fopenmp标志,在这两种情况下我得到相同的错误:
/ usr / bin / ld:找不到-lomp clang-3.8:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我看到如果我改为传递-fopenmp = libgomp,它就可以了。但是,Clang OpenMP网站表示OpenMP运行时随Clang 3.8一起提供。那么,为什么它找不到默认的libomp库呢?我在系统的任何地方都没有看到这个库。
答案 0 :(得分:1)
您的系统很可能缺少OpenMP开发包
在Ubuntu上:sudo apt install libomp-dev
答案 1 :(得分:0)
如果您正确安装了libomp,则需要使用-fopenmp=libomp
。 libgomp
适用于gcc。您可能会检查铿锵声是否与计算机上的gcc符号链接。
答案 2 :(得分:0)
如果您在诸如 libomp.so
make file /usr/lib/llvm-12/lib
之类的地方有 /etc/ld.so.conf.d/libomp.conf
for llvm,其中包含行 /usr/lib/llvm-12/lib
,然后运行 sudo ldconfig
。
就我而言,我安装了 libomp-12-dev,但它不在我的链接器的库路径中。请参阅有关我如何找到图书馆的脚注。在这种情况下有几个解决方案:
ldconfig
添加库路径如果您希望在默认库路径中使用它,请考虑使用 ldconfig
[man page]。
这将在 /etc/ld.so.conf
中查找文件。对我来说,运行 Ubuntu 20.04,这个文件只指向包含目录 /etc/ld.so.conf.d
中的文件。
$ cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
因此,我在 llvm-libomp-12
目录中创建了一个配置 /etc/ld.so.conf.d
,如下所示:
$ cat /etc/ld.so.conf.d/libomp.conf
# libomp.so for llvm
/usr/lib/llvm-12/lib
然后我让 ldconfig 用 sudo ldconfig
更新路径。您可以添加 -v
标志,它会打印它知道的所有库和路径。
我们还可以使用 $LD_LIBRARY_PATH
环境变量将链接器定向到我们的库
如果您使用的是多用户系统并且不想影响其他人,或者如果您想在 shell 中临时更改库路径,这可能是有利的。
查看您当前的 $LD_LIBRARY_PATH
与 echo $LD_LIBRARY_PATH
的关系。您可能没有默认设置。添加此变量的路径,每个路径以冒号分隔。
对于您当前的 shell 会话,只需像这样(假设 bash、zsh 或 fish >v3.0)附加或前置到您的 $LD_LIBRARY_PATH
:
export "$LD_LIBRARY_PATH:/path/to/lib"
或者对于仅限于您的用户的更永久的更改,请将上述导出添加到您的 shell 的配置文件(例如 ~/.bashrc
)。
适用于您在默认库路径中并不总是想要的一次性特定库。将库的路径指定为如下标志:
-L/path/to/lib
例如:
clang++ -L/usr/lib/llvm-12/lib [...]
make -L/usr/lib/llvm-12/lib
如果您不知道您需要的给定库在哪里,您可以使用 find
之类的东西。不过就我个人而言,我使用了一个名为 mlocate
的包,它可以为我机器上的文件编制索引并允许您搜索它们。
sudo apt install mlocate
sudo updatedb
locate libomp.so
当我搜索 libomp 库的位置时,我是这样做的:
$ locate libomp.so
/usr/lib/llvm-12/lib/libomp.so
/usr/lib/llvm-12/lib/libomp.so.5
/usr/lib/x86_64-linux-gnu/libomp.so.5
值得注意的是,clang 似乎在使用 linux-gnu 目录中的 libomp.so.5,但我需要它使用 llvm 库。
$ lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
$ uname -a
Linux bip 5.8.0-48-generic #54~20.04.1-Ubuntu SMP Sat Mar 20 13:40:25 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
可以添加到此问题的一些注释: