因需求缘故,需要在arm926的平台上使用openssl。在官网上下载了源码包版本OpenSSL 1.0.2(坑爹啊,当正在写博客的时候去看了一下官网,结果今天刚出一个版本OpenSSL 1.0.2a)
地址:http://www.openssl.org/
下面是移植步骤:
(1)解压出来,放到想放的地方。
(2)然后呢,仔细阅读一下README文件(这是常规步骤),然后了解了编译使用的一般步骤,遂按照步骤来操作。
(3)README文件说需要对源码进行配置,也就是运行config文件,运行的时候可以加上一些配置参数,这里我写了一个脚本来进行这个过程,脚本内容为:
./config no-asm shared --prefix=/home/xxx/openssl-1.0.2/openssl-install --cross-compile-prefix=/opt/sourcery-arm-201203/bin/arm-none-linux-gnueabi- >& ./xxx_config-host
no-asm : Do not use assembler code.
shared : In addition to the usual static libraries, create shared
libraries on platforms where it‘s supported. See "Note on
shared libraries" below。(编译连接成动态库)
--prefix : 指定之后make install后生成的执行文件跟库的存放位置,后面蓝色部分是我个人的位置。
--cross-compile-prefix :指定交叉编译工具位置及其前缀,当然蓝色部分是我的个人的。
>& ./xxx_config-host : 最后一步是我故意把输出信息重定向到一个文件,纯粹个人爱好,跟编译无关,可删除。
完了之后执行这个脚本,就这样配置完成了。
(4)配置完之后就是make了,在make的时候发现了一些问题:提示找不到-m64,查了资料之后似乎是说-m64是在64位机器上运行才使用的参数,也不知道为什么怎么会有这个参数,先不管它了,删除试试,删除了:
a.SHARED_LDFLAGS=-m64 将-m64删除
b.CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wall 将其中的-m64删除
之后再编译就没问题了。
(5)拷贝openssl-install/bin下的文件到目标板上运行试试,缺少所需库,能运行提示出错,说明编译的没错,只可惜我用了绝对路径的库,后面的工作就是慢慢再优化这个编译过程。
完成。