- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到了对 dlsym@@GLIBC_2.2.5
的 undefined reference 即使在库之前和之后链接它之后。然而,在链接输出中,它似乎是在之前链接,但在所有库都应该工作之前链接,我猜。
/bin/g++-9 CMakeFiles/http_downloader.dir/http_downloader_cli.cpp.o CMakeFiles/http_downloader.dir/SimpleOpenVPNSocket.cpp.o -o http_downloader -lpthread /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/liblz4.so -ldl downloader/libhttp_downloader_cli.a downloader/libhttp_downloader_lib.a ../../libopenvpn/libopenvpn_lib.a ../../_smoltcp_cpp_interface/libsmoltcp_cpp.a ../../_libtins/lib/libtins.a -ldl /usr/lib/x86_64-linux-gnu/libcrypto.so -lpthread /usr/lib/x86_64-linux-gnu/liblz4.so /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libcrypto.so ../../../../smoltcp_cpp_interface/target/debug/libsmoltcp_cpp_interface_rust.a /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libcrypto.so
/usr/bin/ld: ../../../../smoltcp_cpp_interface/target/debug/libsmoltcp_cpp_interface_rust.a(std-6640d3868fa846e8.std.1mk5kra7-cgu.0.rcgu.o): undefined reference to symbol 'dlsym@@GLIBC_2.2.5'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libdl.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [src/examples/http_downloader/CMakeFiles/http_downloader.dir/build.make:113: src/examples/http_downloader/http_downloader] Error 1
make[2]: Leaving directory '/workspaces/libopenvpnclient/build'
make[1]: *** [CMakeFiles/Makefile2:519: src/examples/http_downloader/CMakeFiles/http_downloader.dir/all] Error 2
make[1]: Leaving directory '/workspaces/libopenvpnclient/build'
make: *** [Makefile:130: all] Error 2
这就是我在 CMake 中链接它的方式:
add_executable(http_downloader http_downloader_cli.cpp SimpleOpenVPNSocket.cpp)
add_core_dependencies(http_downloader)
target_include_directories(http_downloader PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/downloader/include)
add_dependencies(http_downloader http_downloader_cli http_downloader_lib openvpn_lib smoltcp_cpp tins)
set_property(TARGET http_downloader PROPERTY CXX_STANDARD 17)
target_link_libraries(http_downloader dl http_downloader_cli http_downloader_lib openvpn_lib smoltcp_cpp tins dl)
正如你所看到的,我已经把
dl
之前和之后的一切只是为了确保。
.a
libs 没有依赖关系,它们只有缺失的符号,我们必须填充它们。似乎我是通过与
-ldl
链接来做到这一点的
最佳答案
你会仔细检查吗?实际命令行 用于链接,你会发现后 libsmoltcp_cpp_interface_rust.a
,漏掉了符号,还有否 -ldl
范围。
看来你的情况smoltcp_cpp
是一个导入的库 目标 ,其中有 libsmoltcp_cpp_interface_rust.a
作为 链接依赖 (不是 IMPORTED_LOCATION
属性(property)左右)。
虽然 CMake 保留了库的顺序,但链接到 单例二进制(一个或另一个库),顺序在 之间依赖项 未定义这些库。
您需要添加 -ldl
作为 smoltcp_cpp
的链接依赖项目标本身:
target_link_libraries(smoltcp_cpp INTERFACE -ldl)
libsmoltcp_cpp_interface_rust.a
是
直销
smoltcp_cpp
的链接依赖项目标,即指定为
target_link_libraries(smoltcp_cpp INTERFACE libsmoltcp_cpp_interface_rust.a)
在间接依赖的情况下,例如
target_link_libraries(smoltcp_cpp INTERFACE <intermediate-target>)
target_link_libraries(<intermediate-target> INTERFACE libsmoltcp_cpp_interface_rust.a)
您需要添加
-ldl
作为该
<intermediate-target>
的依赖项.
关于c++ - 即使我与 -ldl 链接,Cmake 对符号 'dlsym@@GLIBC_2.2.5 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63153342/
我想在我的C++程序中静态链接opencv,因此用户不必自己下载opencv。 我已经尝试了Internet上的所有内容,以尝试在我的C++程序中使用opencv静态库,但是它不起作用。 我已使用-D
我生成了一个随机 5*5 矩阵 x,如下所示: >>> x = np.random.randn(5,5) 并使用 scipy.linalg.ldl 分解它像这样分解: >>> l, d, p = la
Cholesky Decomposition 有两种不同的形式: A = M * ctranspose (M) 和 LDL 形式 A = L * D * ctranspose (L) 其中 ctran
我正在使用带有交叉编译器的 Xilinx SDK 作为 aarch64-none-elf-gcc我正在我的程序中加载一个共享库,但出现错误 Building target: fsbl.elf Invo
我在 github 上编写/维护了一个小型单元测试库 https://github.com/acgreek/ExtremeCUnit使用 cmake 构建。您可以在 checkout 后通过“cmak
我正在尝试编写一个使用 dlysm 的 C 程序,但我一直收到对 dlysm 的 undefined reference 。我想我需要设置我的 -ldl 标志,但我不知道该怎么做。 我对 linux
当我的应用程序需要链接 pthread 库时,我在 CmakeLists.txt 中写入 set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lpthread") ,它可以工
我用java编写了这种LDL^T分解方法(它将方形对称矩阵“A”分解为3个矩阵,其中“L”是对角线上有1的下三角矩阵,“D”是对角矩阵正项,“L^T”是 L) 的转置矩阵。想知道是否可以用相同的方法返
假设我有一个对称半正定矩阵 A(numpy 数组)的“LDL^T”分解,我想将所有因子相乘以获得 A。 实现此目标的最有效方法是什么? 目前,我正在做(D 可用作“矢量”): np.dot(np.do
我正在寻找Python中半定矩阵的Cholesky/LDL分解。 搜索结果: numpy.linalg.cholesky 和 sympy.Matrix.LDLdecomposition 都仅适用于正定
我正在尝试在 ubuntu 14.04 下的 Clion 中编写一个 CMakeList.txt,如下所示: cmake_minimum_required(VERSION 2.8.3) project
我正在尝试在 i86 QNX 架构中构建 RTI perftest。当我尝试构建我生成的 makefile 时,我得到以下信息: Checking directory obj/i86QNX6.6qcc
引用以下代码 test_linker.cpp int main() { srand(time(0)); for (int i = 0; i using std::cout; usin
我正在尝试为 Matrix Vision 销售的 USB 相机 (mvBlueFOX) 编译示例应用程序。他们为我提供了应用程序的源代码、一个 make 文件和一组预编译的共享库。但是,生成文件无法成
TL;DR:我正在做一个使用 dlfcn.h 的 C 练习打开共享库。尽管根据其他帖子添加了(我认为是)正确的标志,但我仍然得到 undefined reference to dlopen 的错误,
我正在处理 LLVM Tutorial ,但我在编译时遇到了麻烦。我写了一个重现该问题的最小示例: #include "llvm/Module.h" #include "llvm/LLVMContex
我正在 CLion 中测试一个简单的问题,但被难住了:看来我无法在基本的 hello world 案例中包含使用 dlopen 的功能: #include #include using names
问题 我在本地 Ubuntu 计算机上启动了一个 C 项目。当我完成第一个版本(构建没问题)后,我决定将代码上传到运行 CentOS 7 的服务器上以实现更多功能。 双方的代码和 makefile 是
我都被谷歌搜索出来了!感谢任何可以帮助我的人...... 我已经构建了 test.so 并希望使用 dlfcn.h 中定义的 dlopen()、dlsym() 等动态调用它 我可以编译我在命令行上调用
我收到了对 dlsym@@GLIBC_2.2.5 的 undefined reference 即使在库之前和之后链接它之后。然而,在链接输出中,它似乎是在之前链接,但在所有库都应该工作之前链接,我猜。
我是一名优秀的程序员,十分优秀!