完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
本文章记录了将openssl移植到arm-linux下的全部过程
移植环境 编译环境:Ubuntu18.04-amd64 模板环境:i.mx6ul Linux 4.1.15 编译链:arm-linux-gnueabihf-4.7 下载openssl源代码 在linux下可以使用如下命令直接下载 tar zxvf openssl-1.1.1c.tar.gz 交叉编译 进入解压后的openssl-1.1.1c文件夹下,根据习惯应该使用。/config进行配置自动生成Makefile文件 。/config no-asm shared --prefix=/home/xx/arm-openssl/ CROSS_COMPILE=/home/xx/arm-linux-gnueabihf-4.7/bin/arm-linux-gnueabihf- CC=gcc 完成后直接make就行 但是!发现编译过程大量警告,基本都是64位和32位不兼容问题。这个可以忽略。 然后严重的问题是arm-linux-gnueabihf-4.7编译器是不提供GNU C的ucontext库,最后有些tools找不到对应函数,导致编译报错。 也就是。/config的简单配置是不行的,要用。/Configure的自定义配置 。/Configure linux-generic32 no-asm shared no-async --prefix=/home/xx/arm-software/arm-openssl CROSS_COMPILE=/home/xx/arm-linux-gnueabihf-4.7/bin/arm-linux-gnueabihf- CC=gcc 这里解释下: linux-generic32表示标准32位linux no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是对arm格式不支持的 shared :生成动态连接库 no-async:没有提供GNU C的ucontext库 完成后直接 makemake install 然后在上面—prefix=指定路径下就找到了编译好的文件 然后查看文件属性 确定交叉编译成功。 移植到开发板下 将编译好的文件夹打包发送到开发板下任意可读写目录,然后解压缩。 例如我放在了/opt/openssl下,得到如下路径和文件夹 进入bin目录运行openssl报错 查看该so文件在lib目录下呢,说明环境变量不对,修改环境变量 export LD_LIBRARY_PATH=/opt/openssl/lib:$LD_LIBRARY_PATH 上面命令以我的路径为例,请自行修改自己的lib路径。运行后再进入bin目录运行openssl程序,看到》就是说明运行成功了 下面测试下openssl在i.mx6ul(Cortex A7单核800MHz)下的性能吧,以RSA-2048为例: 。/openssl speed rsa2048 妈耶!私匙生成每秒8.4次???!!!还好这个过程不会很频繁啊(大概吧,SSL和TLS我也不懂)。 结语 总之记录下所有移植过程,方便自己回忆并放在其他人走弯路。不过i.mx6ul跑openssl确实不太适合,低频Cortex-A7对于大运算量还是有点吃力了。 之前移植ptyhon2.7和sqlite过程就没有记录,现在也不想再来一次了。下一步有时间了计划移植ubuntu-core文件系统到i.mx6ul下,不知道256MB的FLASH能否放得下。如果可以就能免去交叉编译之苦了。 有啥不对的地方欢迎指正,有什么问题欢迎留言探讨。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
3038 浏览 0 评论
800浏览 1评论
1048浏览 0评论
823浏览 0评论
1006浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 20:48 , Processed in 0.687718 second(s), Total 74, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3948
