我正在写一个小项目,我想从共享库中调用一个函数。为此,我想使用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位)上构建程序。
答案 0 :(得分:0)
借助@Lorinczy Zsigmond的注释,我能够找到问题所在:我必须安装软件包libtbb-dev:i836
和libz-dev:i836
才能使函数加载正常工作。 / p>