我一直在尝试编译一个在 suse 上使用 OpenMP 和 gcc --version 4.9.4 的程序
> g++ -std=c++11 -o a.exe -fopenmp ./file.cpp > ./a.exe
./a.exe: /usr/lib64/libgomp.so.1: 找不到版本“GOMP_4.0”(./a.exe 需要)
我有一个名为“/usr/lib64/libgomp.so.1”的文件,我该如何修复它?
我一直在尝试编译一个在 suse 上使用 OpenMP 和 gcc --version 4.9.4 的程序
> g++ -std=c++11 -o a.exe -fopenmp ./file.cpp > ./a.exe
./a.exe: /usr/lib64/libgomp.so.1: 找不到版本“GOMP_4.0”(./a.exe 需要)
我有一个名为“/usr/lib64/libgomp.so.1”的文件,我该如何修复它?
由于您安装了多个 GCC 编译器(4.3 和 4.9),因此您的问题很可能是因为您使用 GCC 4.9(支持 OpenMP 4.0)进行编译,但在运行时操作系统加载程序使用 GCC 4.3 库(不支持 OpenMP 4.0)。
有一些替代方法可以避免此问题:
-static
在链接时使用静态编译您的二进制文件。使 O/S 搜索适当的库而不是旧库。你可以使用命令
find / name -name libgomp.so.1
列出系统中可用的 libgomp 库,然后将存储它的目录添加到LD_LIBRARY_PATH
环境变量中。
-Wl,-rpath -Wl,<dir>/lib
(或 lib64 而不是 lib,如果适用)其中<dir>
指的是第 2 点中的目录)。从这里安装正确的新库http://packages.ubuntu.com/search?keywords=libgomp1在类似的情况下帮助了我。