Raspberry Pi 3编译ibm-watson-iot源码遇debuild错误及crypto/ssl链接问题求助
解决树莓派编译IBM Watson IoT设备客户端的Crypto/SSL链接错误
我之前帮朋友排查过类似的问题,结合你用的树莓派3旧版本镜像,大概率是以下几个原因导致的链接错误,你可以按步骤逐一排查:
1. 依赖库未正确安装或版本过低
你的树莓派镜像版本比较老(2017年的),默认的OpenSSL和crypto库版本可能不满足项目要求,或者安装依赖时漏掉了开发包:
- 先更新系统包并重新安装核心依赖:
sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install --reinstall build-essential debhelper libssl-dev libcrypto++-dev git -y - 检查OpenSSL版本,确认是否符合项目要求:
如果版本低于1.0.2,后续可能需要手动升级(后面会讲)。openssl version
2. 编译配置缺失链接参数
项目的debian/rules文件可能没有明确指定链接crypto和ssl库,导致debuild找不到相关符号:
- 进入克隆的仓库目录,编辑
debian/rules文件:cd ibm-watson-iot/device-raspberrypi nano debian/rules - 找到包含
LDFLAGS或DEB_LDFLAGS_MAINT_APPEND的行,添加-lcrypto -lssl参数,比如:DEB_LDFLAGS_MAINT_APPEND += -lcrypto -lssl - 保存退出后,重新运行编译命令:
debuild -us -uc
3. 仓库子模块未拉取完整
有些项目依赖子模块中的crypto相关代码,如果克隆时没拉取子模块,会导致编译缺失文件:
- 在仓库目录下运行以下命令拉取所有子模块:
git submodule update --init --recursive - 拉取完成后再重新尝试编译。
4. 手动升级OpenSSL(如果上述步骤无效)
如果是系统自带的OpenSSL版本过低导致的问题,可以手动编译安装新版OpenSSL:
- 下载并编译OpenSSL 1.1.1(这个版本兼容性较好):
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar xzf openssl-1.1.1w.tar.gz cd openssl-1.1.1w ./Configure linux-armv4 --prefix=/usr/local/ssl make -j4 sudo make install - 编译项目前指定新版OpenSSL的路径:
export CFLAGS="-I/usr/local/ssl/include" export LDFLAGS="-L/usr/local/ssl/lib" debuild -us -uc
一般来说,前面三个步骤就能解决大部分链接问题,如果还是不行,你可以把具体的错误日志贴出来,我再帮你进一步分析。
内容的提问来源于stack exchange,提问作者HDatta
相关产品推荐
相关产品推荐

