c++ libdl.so: 无法在 32 位应用程序中打开共享库

c++ libdl.so: Can't open shared library in 32bit application

我正在编写一个小项目,我想在其中调用共享库中的函数。为此,我想使用 libdl.sodlopen() 函数。

我已设置好所有内容,以便在我构建时它可以正常工作,运行它作为 64 位应用程序。但是,一旦我将其编译为 32 位应用程序,然后尝试 运行 它,它将无法加载任何库。

dlopen() 只是 returns null 并且调用 dlerror() 显示

libtbbmalloc.so.2: cannot open shared object file: No such file or directory

现在我猜我必须以某种方式安装该库的 32 位版本,但我在包管理器中找不到它,而且我在网上找到的也不是很有帮助。

有人知道这个问题是 and/or 我怎么能伪造它?


我正在通过 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:i836libz-dev:i836 才能使函数加载正常工作.