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

时间:2019-01-18 14:04:06

标签: c++ linux 32bit-64bit libdl

我正在写一个小项目,我想从共享库中调用一个函数。为此,我想使用libdl.so的{​​{1}}函数。

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

dlopen()仅返回null,然后调用dlopen()会显示

  

libtbbmalloc.so.2:无法打开共享库文件:没有这样的文件或目录

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

有人知道问题出在哪里,和/或我怎么解决?


我正在通过dlerror()构建项目,并且在CMakeLists.txt中,我将以下说明用于32位:

cmake v3.10

我已经安装了软件包set_target_properties(clib PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") target_link_libraries(clib /usr/lib32/libdl.so) ,而我的g++-multilib版本是g++

我正在尝试在Linux Mint 18.3(6位)上构建程序。

1 个答案:

答案 0 :(得分:0)

借助@Lorinczy Zsigmond的注释,我能够找到问题所在:我必须安装软件包libtbb-dev:i836libz-dev:i836才能使函数加载正常工作。 / p>