首页 > 代码库 > openssl交叉编译记录

openssl交叉编译记录

本次任务是要完成嵌入式Linux下对openssl程序的支持。
    我的开发环境:ARM9开发板 和 嵌入式Linux操作系统。装有Linux系统(我的是ubuntu9.04)的PC机一台。串口和串口连接线。串口调试软件:minicom。交叉编译工具:arm-unknown-linux-gnu-gcc
    下载最新版本的openssl-1.0.0:
    http://www.openssl.org/source/
   
    解压:$tar -xzvf  openssl-1.0.0.tart.gz
           $cd openssl-1.0.0
        openssl-1.0.0$ ./config no-asm shared prefix=/home/lanpeng/arm-openssl
    解释一下这里的参数: config就是配置脚本,这里不多说了。no-asm是在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的汇编代码是对arm格式不支持的。我试过了,如果没有这个参数,你的交叉编译一定出错。shared生成动态连接库。prefix=路径  就是你的安装目录。安装完成后在这个目录下会有四个文件夹:bin lib include ssl。这四个目录非常重要,openssl编程就需要这些目录的配合。
    配置完成后我们还要修改Makefile文件(或许有更好的办法不用修改Makefile,这里请高手指点)。修改如下:

       
 62 #CC= gcc
 63 CC = arm-unknown-linux-gnu-gcc
 64 #CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAV    E_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
 65 CFLAG= -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_N    O_KRB5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
 66 DEPFLAG= -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_R    C5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE
 67 PEX_LIBS=
 68 EX_LIBS= -ldl
 69 EXE_EXT=
 70 ARFLAGS=
 71 #AR= ar $(ARFLAGS) r
 72 AR = arm-unknown-linux-gnu-ar $(ARFLAGS) r
 73 RANLIB = arm-unknown-linux-gnu-ranlib
 74 #RANLIB= /usr/bin/ranlib
 75 #NM= nm
 76 NM = arm-unknown-linux-gnu-nm
 77 PERL= /usr/bin/perl
 78 TAR= tar
 79 TARFLAGS= --no-recursion
 80 MAKEDEPPROG= gcc
 81 LIBDIR=lib

 

还有一个需要更改的地方,所有-march后面对应的内核要是自己的arm的型号,默认的好像是奔腾的,你要改成自己的如armv5,这个在你执行的时候报错提示你,然后给出一堆型号你选择自己对应的即可。

  即使用交叉编译工具去编译openssl。
  修改好了以后执行命令:  opensl-1.0.0$ make

  要编译5分钟左右,慢慢等吧。
  然后在输入命令:  opensl-1.0.0$ make install

  没有错误!恭喜了,安装成功。