c++ - c++ libdl.so:无法在 32 位应用程序中打开共享库
问题描述
我正在写一个小项目,我想从共享库中调用一个函数。为此,我想使用libdl.so
'dlopen()
功能。
我已经设置好所有东西,以便当我将它作为 64 位应用程序构建和运行时它可以正常工作。但是,一旦我将它编译为 32 位应用程序然后尝试运行它,它将无法加载任何库。
dlopen()
只需返回 null 并调用dlerror()
显示
libtbbmalloc.so.2:无法打开共享对象文件:没有这样的文件或目录
现在我猜我必须以某种方式安装该库的 32 位版本,但我无法在包管理器中找到它,而且我在网上找到的内容也没有太大帮助。
有人知道问题出在哪里和/或我怎么能找到它?
我正在通过cmake v3.10
CMakeLists.txt 构建我的项目,我正在使用 32 位的说明:
set_target_properties(clib PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
target_link_libraries(clib /usr/lib32/libdl.so)
我已经安装了这个包g++-multilib
,我的g++
版本是7.3.0
.
我正在尝试在 Linux Mint 18.3(6 位)上构建我的程序。
解决方案
在评论中@Lorinczy Zsigmond 的帮助下,我找到了问题所在:我必须安装软件包libtbb-dev:i836
,libz-dev:i836
才能使功能加载正常工作。
推荐阅读
- tensorflow - StyleGAN 2 图像在 Tick 0 后完全变黑
- authentication - 如何处理我网站中的社交登录流程 - 有问题的流程和最佳实践
- javascript - 使用条件过滤对象数组
- android - 模拟器进程被Android Studio杀死?
- excel - 租赁日期 - 每个季度应为 90 天,但年底应为 365/366 天
- javascript - 无法在循环中绘制画布上下文
- python - SSLError:HTTPSConnectionPool Python 错误
- c++ - (FUZZING) 获取指向动态数组数据范围的指针
- python - 在python中对数据进行分组而不按方法分组
- python - CKEditor CDN 脚本不起作用,即使一切都正确