我正在写一个小项目,我想从共享库中调用一个函数。为此,我想使用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 位)上构建我的程序。