人类的孤独像是一种与生俱来的残疾。

交叉编译openssl

模拟电路 smallfish 3228℃

由于很多地方会用到openssl,所以这里记录一下。baidu了不少,结果都不行,最后google了这篇才可以。参考来自:https://how-to-build-for-arm.wikispaces.com/openssl

下载源码及两个补丁。

wget ftp://ftp.openssl.org/source/openssl-1.0.1g.tar.gz

tar -pxzf openssl-1.0.1g.tar.gz

wget http://www.linuxfromscratch.org/patches/downloads/openssl/openssl-1.0.1g-fix_parallel_build-1.patch

wget http://www.linuxfromscratch.org/patches/downloads/openssl/openssl-1.0.1g-fix_pod_syntax-1.patch

解压后,进入解压后目录,打补丁

cd openssl-1.0.1g/

patch -Np1 -i ../openssl-1.0.1g-fix_parallel_build-1.patch

patch -Np1 -i ../openssl-1.0.1g-fix_pod_syntax-1.patch

设置交叉编译环境,这是原文设置,这里需要按自己的交叉编译环境做一点修改。

export INSTALLDIR=~/workbench/gcc-4.8.2/arm
export PATH=$INSTALLDIR/bin:$PATH
export TARGETMACH=arm-none-linux-gnueabi
export BUILDMACH=i686-pc-linux-gnu
export CROSS=arm-none-linux-gnueabi
export CC=${CROSS}-gcc
export LD=${CROSS}-ld
export AS=${CROSS}-as
export AR=${CROSS}-ar

第一点设定安装目录,因为我们交叉编译出ssl的动态或静态库主要是用于交叉编译器在编译其他使用到ssl的程序连接用(当然也可以拷贝到嵌入式环境中使用)。因此这里把安装目录设置为交叉编译器的连接库目录。

第二个bin目录其实不太需要,我们也可以按这种形式给出。

然后是目标机器(即使用这个文件的机器架构),编译机器,交叉编译器运行的机器。这两条交不是很重要了。最关键的是:交叉编译器,这一定要指明用什么交叉编译器来编译ssl。后面的这些就是gcc,ld,as,ar。

因此,我的配置是:

export INSTALLDIR=/opt/toolchain/aarch64-linux
export PATH=$INSTALLDIR/bin:$PATH
export TARGETMACH=aarch64-linux
export BUILDMACH=i686-pc-linux-gnu
export CROSS=aarch64-linux-gnu
export CC=${CROSS}-gcc
export LD=${CROSS}-ld
export AS=${CROSS}-as
export AR=${CROSS}-ar

做这个配置的目的是为了在后续执行make的时候能使用交叉编译器。

然后是配置openssl的源码:

./Configure --openssldir=/home/szbaijie/Firmware/third_party_libs/openssl-1.0.1g/final shared os/compiler:aarch64-linux

我们这里使用了shared参数,但是它会提示不知道如何生成aarch64平台下的共享库,因此我们编译出来后只有静态库。

然后是make -j4,但是不要make install,因为我的出问题了。但是我们可以继续进行下一步。因为没有install成功,所以需要把libcrypto.a和libssl.a手动拷贝到final/lib目录下。

然后执行$AR -x libcryto.a 执行不下去了。

再想办法解决。

 

转载请注明:OpenMind » 交叉编译openssl

喜欢 (5)