libcrypto.so.1.0.0编译

背景

运行程序出现
./main: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.25’ not found (required by /lib/arm-linux-gnueabihf/libcrypto.so.1.1) 
是编译的libcrypto.so版本高于系统的glibc版本,只能重新编译一个低版本的libcrypto.so库。

脚本

build.sh

#! /bin/bash

wget https://www.openssl.org/source/openssl-1.0.2.tar.gz

tar -xvf openssl-1.0.2.tar.gz

chmod +x run.sh
cp run.sh ./openssl-1.0.2

cd openssl-1.0.2
./run.sh

run.sh

#! /bin/bash

ARM_CROSS_TOOL=/home/z/cross_tool/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/bin

SYS_LIB_DIR=$ARM_CROSS_TOOL/../arm-linux-gnueabihf/libc/usr/


export PATH=$PATH:$ARM_CROSS_TOOL

OUT_TARGET=`pwd`/../openssl_arm
mkdir -p $OUT_TARGET

vcom=arm-linux-gnueabihf
 
export CC="$vcom"-gcc
export CPP="$vcom"-g++
export AR="$vcom"-ar
export LD="$vcom"-ld
export RANLIB="$vcom"-ranlib

LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
export LDFLAGS

./config \
no-asm \
shared \
--prefix=$OUT_TARGET


#delete MakeFile -m64
sed -i "s/-m64/ /g" Makefile 

make 
make install

echo "the output files is in $OUT_TARGET"

cp -rvf $OUT_TARGET/* $SYS_LIB_DIR/
echo "$SYS_LIB_DIR"
echo "finish"

不要多线程编译,可能此版本不支持多线程同时编译。

编译

chmod +x build.sh
./build.sh

输出

$ ls openssl_arm
bin  include  lib  ssl

$ file openssl_arm/lib/libcrypto.so.1.0.0 
openssl_arm/lib/libcrypto.so.1.0.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=153cd45bfd9c3d58d68d5153101fdd7eb003c4e8, not stripped

注意

此版本编译出的库版本是libcrypto.so.1.0.0 , 应该可以用于glibc 2.23的系统,链接该版本库时,要将该版本库放到交叉编译器的libc/usr/目录下才可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值