OpenMP + linux - GOMP_4.0 未找到

OpenMP + linux - GOMP_4.0 not found

我一直在尝试使用 gcc --version 4.9.4

编译一个在 suse 上使用 OpenMP 的程序
> g++ -std=c++11 -o a.exe -fopenmp ./file.cpp
> ./a.exe

./a.exe: /usr/lib64/libgomp.so.1: version `GOMP_4.0' not found (required by ./a.exe)

我有一个名为“/usr/lib64/libgomp.so.1”的文件,我该如何修复它?

由于您安装了多个 GCC 编译器(4.3 和 4.9),您的问题很可能是因为您使用 GCC 4.9(它支持 OpenMP 4.0)编译,但在运行时 OS 加载器使用GCC 4.3 库(不支持 OpenMP 4.0)。

有一些替代方法可以避免这个问题:

  1. 在 link 时使用 -static 静态编译二进制文件。
  2. 使 O/S 搜索适当的库而不是旧库。您可以使用命令

    find / name -name libgomp.so.1
    

    列出系统中可用的 libgomp 库,然后将其存储目录添加到 LD_LIBRARY_PATH 环境变量中。

  3. 替代 2),您还可以告诉 linker 生成二进制文件并让它知道除了 LD_LIBRARY_PATH 指向的位置之外还可以在哪里找到其他共享库。您还可以使用 gcc ... -Wl,-rpath -Wl,<dir>/lib(或 lib64 而不是 lib,如果适用)其中 <dir> 指的是第 2 点的目录)。

从这里安装正确的新库 http://packages.ubuntu.com/search?keywords=libgomp1 在类似情况下帮助了我。