You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake链接OpenSSL出现未定义符号错误,请求帮助

问题分析与解决

嘿,这个问题我之前也碰到过!你链接的libssl里根本没包含AES那些函数——这些加密算法其实在OpenSSL的libcrypto库里面呢。

OpenSSL其实拆成了两个核心库:

  • libssl:管的是SSL/TLS协议相关的活儿,比如握手、证书验证这类网络安全功能
  • libcrypto:才是提供底层加密算法实现的地方,像你用到的AES加解密、密钥设置这些接口全在这儿

你的CMake代码里只链接了${OPENSSL_SSL_LIBRARY},漏掉了承载AES函数的libcrypto,难怪链接器会报符号找不到的错误。

修正后的CMakeLists.txt

把链接部分改成同时包含两个库就行:

find_package(OpenSSL REQUIRED)
add_executable( aes_test src/aes_test.cpp )
MESSAGE(${OPENSSL_FOUND})
MESSAGE(${OPENSSL_SSL_LIBRARY})
MESSAGE(${OPENSSL_CRYPTO_LIBRARY}) # 可以加这句输出确认libcrypto的路径
target_link_libraries( aes_test ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} )

更规范的现代CMake写法(推荐)

如果你的CMake版本在3.10及以上,建议用OpenSSL提供的导入目标来写,这种方式更简洁,还能自动处理库的依赖关系,不容易出错:

find_package(OpenSSL REQUIRED)
add_executable( aes_test src/aes_test.cpp )
target_link_libraries( aes_test PRIVATE OpenSSL::SSL OpenSSL::Crypto )

内容的提问来源于stack exchange,提问作者CoXier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:18:27