c++ libdl.so: 无法在 32 位应用程序中打开共享库
c++ libdl.so: Can't open shared library in 32bit application
我正在编写一个小项目,我想在其中调用共享库中的函数。为此,我想使用 libdl.so
的 dlopen()
函数。
我已设置好所有内容,以便在我构建时它可以正常工作,运行它作为 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:i836
和 libz-dev:i836
才能使函数加载正常工作.
我正在编写一个小项目,我想在其中调用共享库中的函数。为此,我想使用 libdl.so
的 dlopen()
函数。
我已设置好所有内容,以便在我构建时它可以正常工作,运行它作为 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:i836
和 libz-dev:i836
才能使函数加载正常工作.