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

问题描述 投票:0回答:1

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

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

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

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

知道什么会导致问题吗?

c++ path shared-libraries openmp
1个回答
3
投票

对您的程序使用静态链接。在您的情况下,这意味着使用

-fopenmp -static
,并在必要时指定相关
librt.a
libgomp.a
库的完整路径。

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

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

  • 二进制大小。想象一下,如果您静态链接所有 KDE 程序,那么您的系统上实际上将拥有数百个所有 KDE/QT 库的副本,而如果您使用共享库则只能拥有一个副本
  • 更新路径。假设人们在图书馆发现安全问题
    x
    。对于共享库,只要在补丁可用后更新库就足够了。如果您的所有应用程序都是静态链接的,您将不得不等待所有这些开发人员重新链接并重新发布他们的应用程序。
© www.soinside.com 2019 - 2024. All rights reserved.