libgomp.so.1:无法打开共享对象文件
libgomp.so.1: cannot open shared object file
我在C++代码中使用OpenMP。
libgomp.so.1 存在于我的 lib 文件夹中。我还将其路径添加到LD_LIBRARY_PATH
仍然在运行时,我收到错误消息:libgomp.so.1:无法打开共享对象文件
在编译时,我使用 -fopenmp 选项编译我的代码。
知道什么会导致问题吗?
谢谢
对程序使用静态链接。在您的情况下,这意味着使用 -fopenmp -static
,并在必要时指定相关librt.a
和libgomp.a
库的完整路径。
这解决了您的问题,因为静态链接只是将运行程序所需的所有代码与二进制文件一起打包。因此,您的目标系统不需要查找任何动态库,甚至它们是否存在于目标系统上也无关紧要。
请注意,静态链接不是灵丹妙药。对于您使用奇怪的硬件模拟器的特定问题,这应该是一个好方法。但是,一般来说,静态链接(至少)有两个缺点:
- 二进制大小。想象一下,如果你静态地链接了所有的KDE程序,那么你基本上在你的系统上会有数百个所有KDE/QT库的副本,而如果你使用共享库,你可以只有一个 。
- 更新路径。假设人们在图书馆
x
中发现了安全问题。使用共享库,只需在修补程序可用后更新库就足够了。如果所有应用程序都是静态链接的,则必须等待所有这些开发人员重新链接并重新发布其应用程序。
相关文章:
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 如何创建一个共享对象与另一个.所以在Cmake
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 在 Android Studio 中使用 C++ 共享对象时出现问题
- 共享对象、符号、C/C++ 库链接和加载
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 在 win32 上生成 R 包:无法加载共享对象 (.dll)
- 共享对象中的符号
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- C++ 为什么要级联共享对象链接
- 加载共享库时出错:libbsoncxx.so._noabi:无法打开共享对象文件:没有此类文件或目录
- 从单个.cpp构建共享对象
- 与 32 位共享对象的链接问题
- 卸载共享对象(.so 文件)在 C++ 中用 dlopen() 打开
- 运行程序时找不到共享对象库,但在编译过程中链接了它
- 错误:无法打开共享对象文件:没有此类文件或目录
- Qt 创建器:将库移动到 subdir 后无法打开共享对象文件
- 共享对象中的符号名称与文件中.cpp函数不同
- C++:在共享对象中调用抽象基类构造函数/未定义的符号
- Cython:共享对象中未定义的符号