gpt4 book ai didi

c++ - 命令行中缺少 DSO(使用 CMake)

转载 作者:IT王子 更新时间:2023-10-29 00:43:08 27 4
gpt4 key购买 nike

我正在尝试通过使用 Cmake 再次编译所有内容,将一个 c++ 项目从 Windows 转换为 Debian。

我不太习惯在 Linux 上工作,但我已经设法正确安装了所有东西。

这是错误:

/usr/bin/ld: ../shared/libshared.a(BigNumber.cpp.o): undefined reference to symbol 'BN_new@@OPENSSL_1.0.2d'

//usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2: error adding symbols: DSO missing from command line

这实际上似乎是一个常见问题,但我不知道如何处理 Cmake。我已经看到了一些答案,例如:

DSO missing from command line

How do I tell CMake to link in a static library in the source directory?

How to add linker or compile flag in cmake file?

我有点困惑,你能帮我理解我需要用 Cmake 做什么吗?

谢谢

最佳答案

如果不查看 CMake 文件本身,很难猜测可能出了什么问题,但这里有一些可能的解决方案。

根据您第一个引用答案 ( DSO missing from command line ) 中的类似错误,您似乎只是忘记链接到 libcrypto.so.1.0.2 库(或者可能错过了ssl 库)。根据我的经验,这些通常串联使用,因此您可能需要将两者联系起来。使用 target_link_libraries命令将这些库链接到您的 CMake 目标:

target_link_libraries(MyLib PRIVATE ssl crypto)

我还看到过由于 OpenSSL 版本中的不匹配 而出现此错误的情况。例如,您的计算机上可能安装了 OpenSSL 1.1 版,但您使用的库或包需要 1.0.2 版(如错误提示的那样)。如果是这种情况,您可以卸载当前的 OpenSSL 版本 (1.1) 并安装旧版本 (1.0.2):

apt-get purge libssl-dev
apt-get install libssl1.0-dev

关于c++ - 命令行中缺少 DSO(使用 CMake),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40071701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com