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

libgomp.so.1: cannot open shared object file

本文关键字:共享 对象 文件 so libgomp      更新时间:2023-10-16

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

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

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

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

知道什么会导致问题吗?

谢谢

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

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

请注意,静态链接不是灵丹妙药。对于您使用奇怪的硬件模拟器的特定问题,这应该是一个好方法。但是,一般来说,静态链接(至少)有两个缺点:

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