libgomp.so.1:无法打开共享对象文件

时间:2013-02-02 12:27:34

标签: c++ compiler-construction path shared-libraries openmp

我在我的C ++代码中使用OpenMP。

libgomp.so.1存在于我的lib文件夹中。我还将其路径添加到LD_LIBRARY_PATH

仍然在运行时我收到错误消息: libgomp.so.1:无法打开共享对象文件

在编译时我用-fopenmp选项编译我的代码。

知道什么可能导致问题吗?

由于

1 个答案:

答案 0 :(得分:2)

为您的程序使用静态链接。在您的情况下,这意味着使用-fopenmp -static,并在必要时指定相关librt.alibgomp.a库的完整路径。

这解决了您的问题,因为静态链接只会打包所有与您的二进制文件一起运行程序所需的代码。因此,您的目标系统不需要查找任何动态库,它们在目标系统上是否存在甚至无关紧要。

请注意,静态链接不是奇迹般的治疗方法。对于奇怪的硬件仿真器的特殊问题,它应该是一个很好的方法。但是,一般情况下,静态链接至少有两个缺点:

  • 二进制大小。想象一下,如果您静态链接所有KDE程序,那么如果您使用共享库,只要有一个KDE / QT库,您基本上就可以拥有数百份KDE / QT库。
  • 更新路径。假设人们在库x中发现安全问题。使用共享库,如果只是在补丁可用时更新库就足够了。如果您的所有应用程序都是静态链接的,则必须等待所有这些开发人员重新链接并重新发布其应用程序。