求RHEL5 x64平台OpenSSL 64位预编译库,解决libssl/libcrypto兼容问题
解决RHEL5 x64下OpenSSL 64位库链接不兼容警告问题
首先,你碰到的ld: skipping incompatible警告,本质是自己编译的OpenSSL库是32位版本,而你的RHEL5 x64系统是64位环境,链接器会自动跳过和当前架构不匹配的库文件。下面给你两种实用的解决方案:
方案1:直接安装RHEL5 x64官方预编译OpenSSL库
这是最省心的方式,官方包已经完美适配x64架构,不用自己折腾编译:
- 用yum安装开发包(包含64位库和配套头文件):
sudo yum install openssl-devel.x86_64 - 如果系统没配置官方yum源,你可以手动下载对应版本的
openssl-devel-*.x86_64.rpm包,然后用rpm命令安装:rpm -ivh openssl-devel-*.x86_64.rpm
安装完成后,链接器会自动识别系统默认路径下的64位库,直接用-lssl -lcrypto就能正常链接,不会再出现不兼容警告。
方案2:重新编译64位OpenSSL库(若坚持用自定义编译版本)
如果你需要保留自己编译的库,得确保编译过程是针对x64架构的:
- 先清理之前的编译残留,避免旧配置干扰:
make clean && make distclean - 配置时指定x64架构参数(注意是大写的
Configure):./Configure linux-x86_64 --prefix=/home/devlog/prog/toto - 编译并安装:
make && make install - 验证库的架构:用
file命令检查生成的库是否为64位:
如果输出包含file /home/devlog/prog/toto/libssl.sox86-64,说明是64位库,此时再链接就不会出现跳过的警告了。
额外注意点
- 确认系统是64位:执行
uname -m,输出x86_64就没问题。 - 如果系统同时存在32位和64位库,链接器会优先匹配当前系统架构的版本,所以要确保编译环境没有强制32位编译的参数(比如
-m32)。
内容的提问来源于stack exchange,提问作者Ligin MATHEW




