ARM-Linux 下 openssl 的移植

时间:2021-01-16 16:33:04

tar -zxvf openssl-1.0.0b.tar.gz

  cd openssl-1.0.0b


  一.推荐的编译方法


  注意这里不是常用的configure,而是一个脚本Config


  AR="arm-linux-ar" RANLIB=arm-linux-ranlib  CC=arm-linux-gcc /usr/bin/perl ./Configure shared linux-armv4 --prefix="$PWD/../../output/arm-linux"  


  AR/RANDLIB/C环境变量 是确保Makefile中使用arm-linux 系列工具


  /usr/bin/perl ./Configure  表示执行perl脚本


  Configure,注意第一个字母是大写


  shared 表示要编译动态库,


  linux-armv4 表示生成目标平台名称,我用的s3c6410的平台,


  这个应该能使用ARMv4的指令.


  --prefix 指明安装目录.


  make


  make install


  二,自定义平台的方法(不推荐)


  网上有直接自定义编译器的配置脚本,缺省只有能编译静态库,动态库需要手工修改Makefile


  2.1 生成静态库


  AR="arm-linux-ar" RANLIB=arm-linux-ranlib  CC=arm-linux-gcc ./config  shared os/compiler:arm-linux-gcc --prefix="$PWD/../../output/arm-linux"这里os/compiler: 表示采用自定义平台,指定编译器


  2.2 生成动态库的


  在上一步的基础上修改Makefile.修改SHLIB_EXT的值为 .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)


  修改SHLIB_TARGET的值为 linux-shared   在build_all 后面依赖列表里增加 build-shared


  make会同时看到静态和动态库,但是好象无法正常安装动态库到发布目录,可以手工拷贝或者继续调整makefile


  make


  make install


  三,应用程序使用openssl


  网应用程序使用openssl时,需要手工链接openssl两个库 libssl和libcrypto.在链接时使用 -lssl -lcrypto ,注意两个库的链接顺序不能对调

---------------------------------------------------------------------

利用arm-none-linux-gnueabi-gcc交叉编译openssl,生成静态库文件libcrypto.a ,libssl.a


1、从openssl官网下载openssl最新版本,我下载的是openssl-1.0.2e。下载地址:http://www.openssl.org/source/


2、安装arm-none-linux-gnueabi-gcc,下载后解压,然后配置一下环境变量就可以。


3、解压openssl源码,进入目录,执行:


CC=arm-none-linux-gnueabi-gcc,修改编译器


./config no-asm -static --prefix=/usr/local/ssl-1.0.2/, 配置,--prefix为安装目录


配置完成后:手动修改生成的Makefile,并且找到有-m64的地方,全删之(共2处)


make & make install