Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3105847
  • 博文数量: 396
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4209
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-04 13:04
文章分类

全部博文(396)

文章存档

2022年(1)

2021年(2)

2020年(8)

2019年(24)

2018年(135)

2017年(158)

2016年(68)

我的朋友

分类: 嵌入式

2017-09-20 15:19:04

系统环境:Ubuntu 14.04.3 LTS
源码:openssl-1.1.0-pre1.tar.gz
交叉编译环境:arm-none-linux-gnueabi-

[zhaojq@virtual-machine]# tar -xzvf openssl-1.1.0-pre1.tar.gz
[zhaojq@virtual-machine]# cd openssl-1.1.0-pre1

[zhaojq@virtual-machine]# sudo -i
切换到root状态下
不然在config时会出现unable to create Makefile.new:权限不够

[root@virtual-machine]# ./config no-asm shared
no-asm 是在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的汇编代码是对arm格式不支持的
shared 生成动态连接库
--prefix 指定make install后生成目录的路径,不修改此项则默认为OPENSSLDIR目录(/usr/local/ssl)

配置完成后修改Makefile文件,CC=和--host=无效
#CC= gcc
CC= arm-none-linux-gnueabi-gcc

删除 CFLAG= 中的-march=i486
必须删除掉,默认的是x486体系,即使设置了交叉编译环境,还是会默认这个体系

EX_LIBS=-ldl

#AR= ar $(ARFLAGS) r
AR= arm-none-linux-gnueabi-ar $(ARFLAGS) r

#RANLIB= /usr/bin/ranlib
RANLIB= arm-none-linux-gnueabi-ranlib

#NM= nm
NM= arm-none-linux-gnueabi-nm

[root@virtual-machine]# make
[root@virtual-machine]# make install
安装成功

交叉编译后的动态库文件在/usr/local/ssl目录
[zhaojq@virtual-machine /usr/local/ssl]# ls
bin  certs  include  lib  man  misc  openssl.cnf  private
查看库文件格式
[zhaojq@virtual-machine /usr/local/ssl/lib]# readelf -h libssl.so
ELF 头:
  Machine:  
ARM

编译test实例
  1. #include   
  2. #include   
  3.   
  4. int main ()  
  5. {  
  6.   SHA_CTX s;  
  7.   int i, size;  
  8.   char c[512];  
  9.   unsigned char hash[20];  
  10.   // 初始化 SHA Contex, 成功返回1,失败返回0  
  11.   SHA1_Init(&s);  
  12.   
  13.   // 循环调用此函数,可以将不同的数据加在一起计算SHA1,成功返回1,失败返回0  
  14.   while ((size=read (0, c, 512)) > 0)  
  15.     SHA1_Update(&s, c, size);  
  16.   
  17.   // 输出SHA1结果数据,成功返回1,失败返回0  
  18.   SHA1_Final(hash, &s);  
  19.   
  20.   for (i=0; i < 20; i++)  
  21.     printf ("%.2x", (int)hash[i]);  
  22.   printf ("\n");  
  23. }  
[zhaojq@virtual-machine]# arm-none-linux-gnueabi-gcc sha1_test.c -I/usr/local/ssl/include/ -L/usr/local/ssl/lib -lssl -lcrypto -ldl -o sha1_test.out
编译通过,在当前目录生成sha1_test.out可执行文件

将/usr/local/ssl/lib目录下的所有文件和pkgconfig,engines目录都拷贝到ARM设备上文件系统的/lib目录,
sha1_test.out拷贝到ARM设备上

执行./sha1_test.out < sha1_test.out
输出:78b32a7882a5ffea5d48b2f2b6bea633fa78e0e1
移植成功。


阅读(6207) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~