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)。
有一些替代方法可以避免这个问题:
- 在 link 时使用
-static
静态编译二进制文件。
使 O/S 搜索适当的库而不是旧库。您可以使用命令
find / name -name libgomp.so.1
列出系统中可用的 libgomp 库,然后将其存储目录添加到 LD_LIBRARY_PATH
环境变量中。
- 替代 2),您还可以告诉 linker 生成二进制文件并让它知道除了 LD_LIBRARY_PATH 指向的位置之外还可以在哪里找到其他共享库。您还可以使用 gcc ...
-Wl,-rpath -Wl,<dir>/lib
(或 lib64 而不是 lib,如果适用)其中 <dir>
指的是第 2 点的目录)。
从这里安装正确的新库 http://packages.ubuntu.com/search?keywords=libgomp1 在类似情况下帮助了我。
我一直在尝试使用 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)。
有一些替代方法可以避免这个问题:
- 在 link 时使用
-static
静态编译二进制文件。 使 O/S 搜索适当的库而不是旧库。您可以使用命令
find / name -name libgomp.so.1
列出系统中可用的 libgomp 库,然后将其存储目录添加到
LD_LIBRARY_PATH
环境变量中。- 替代 2),您还可以告诉 linker 生成二进制文件并让它知道除了 LD_LIBRARY_PATH 指向的位置之外还可以在哪里找到其他共享库。您还可以使用 gcc ...
-Wl,-rpath -Wl,<dir>/lib
(或 lib64 而不是 lib,如果适用)其中<dir>
指的是第 2 点的目录)。
从这里安装正确的新库 http://packages.ubuntu.com/search?keywords=libgomp1 在类似情况下帮助了我。