编译Alexa语音服务(AVS)SDK时cmake报错无法找到CURL
解决步骤
1. 彻底清理旧版本curl残留
手动编译安装的curl执行make uninstall通常无法完全删除所有文件,旧版本库文件残留会导致版本识别错误,执行以下命令清理:
# 删除所有旧curl相关库文件 sudo rm -rf /usr/local/lib/libcurl* # 删除curl头文件 sudo rm -rf /usr/local/include/curl # 删除curl二进制文件 sudo rm -rf /usr/local/bin/curl # 更新动态链接库缓存 sudo ldconfig
2. 重新安装目标版本curl
重新执行7.77.0版本curl的编译安装流程:
wget https://curl.se/download/curl-7.77.0.tar.gz tar xzf curl-7.77.0.tar.gz cd curl-7.77.0 ./configure --with-nghttp2 --prefix=/usr/local --with-ssl make && sudo make install sudo ldconfig
安装完成后验证版本是否正确,执行curl --version,确认输出的版本号为7.77.0。
3. 清除cmake缓存
之前执行cmake时生成的缓存会保留旧版本curl的检测结果,必须清空原有构建目录的缓存:
# 进入你的AVS SDK构建目录,例如 cd $HOME/my_alexa_project/build # 删除所有缓存文件 rm -rf *
4. 重新执行cmake命令(可选:显式指定curl路径)
如果默认检测仍然识别到旧版本,可以在cmake参数中显式指定curl的安装路径:
cmake $HOME/my_alexa_project/source/avs-device-sdk \ -DGSTREAMER_MEDIA_PLAYER=ON \ -DPORTAUDIO=ON \ -DPORTAUDIO_LIB_PATH=$HOME/my_alexa_project/third-party/portaudio/lib/.libs/libportaudio.so \ -DPORTAUDIO_INCLUDE_DIR=$HOME/my_alexa_project/third-party/portaudio/include \ -DCMAKE_BUILD_TYPE=DEBUG \ -DCURL_ROOT=/usr/local \ -DCURL_INCLUDE_DIR=/usr/local/include \ -DCURL_LIBRARY=/usr/local/lib/libcurl.so
问题原因说明
- 旧版本curl编译安装的库文件没有被完全卸载,
/usr/local/lib下残留的libcurl.so.4软链接仍然指向7.63.0版本 - cmake的缓存机制会复用第一次检测到的curl版本信息,不会自动更新为新安装的版本
内容的提问来源于stack exchange,提问作者Dinkar Jain
相关产品推荐
相关产品推荐

