移植openssh-7.5p1(包括openssl-1.0.2l、zlib-1.2.11)到HISI3520d(编译篇)
PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
前置说明
本文作为本人csdn blog的主站的备份。(BlogID=041)
本文发布于 2017-09-20 09:59:43,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=041)
环境说明
HOST:
Linux 4.10.0-35-generic #39~16.04.1-Ubuntu SMP Wed Sep 13 09:02:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
TARGET:
arm-hisiv400-linux-gnueabi 工具链,GLIBC-Kernel
前言
最近有个项目是使用的hisiv3520d的片子,按照官方SDK移植好了glibc-kernel之后,准备进行后期的开发。但是这块板子只有一个调试串口,多个同事就不能够同时使用这块板子,所以,就有了移植openssh的想法。
移植Openssh
首先配置好官方的SDK,工具链必须是hisiv400的,这个工具链是glibc版本的,同时为了保持和内核的兼容性。
首先找到当前openssh的稳定版本,下载地址为下面的地址,版本为7.5p1
ftp://mirror.internode.on.net/pub/OpenBSD/OpenSSH/portable/
下载解压后,这里有一个文件希望大家在移植前先读一读根目录下一个叫做INSTALL的文本文件,特别是关于依赖的zlib和openssl兼容版本部分(下图已圈出重点)。下面是截图:
友情提示:一定要选择 《 版本合适 》 的zlib和openssl,不然最后编译不过openssh,我就是踩了这个坑。
- 移植openssl-1.0.2l,下载地址(https://www.openssl.org/source/)。这里很多网上的交叉编译方法答案都比较的乱,个人感觉有点复杂,都没有仔细的去读INSTALL文件。
其实直接执行:
./config no-asm shared --prefix=/home/sky/hisi3520d/Work/install --cross-compile-prefix=arm-hisiv400-linux-gnueabi-
我就不对这些参数一一说明了,这些参数的说明来自于Configure和INSTALL这个文件。非常全,下面是节选的部分说明。
# --prefix prefix for the OpenSSL include, lib and bin directories
# --cross-compile-prefix Add specified prefix to binutils components.
# no-asm do not use assembler
# shared In addition to the usual static libraries, create # shared libraries on platforms where it's supported.
这里,我们需要查找自己要移植的芯片的arm架构版本,并且修改.config里面的有个叫做GUESSOS的变量。我看它脚本里面写的TARGET名字的规则(如下图),就自己定义一个合理的值给GUESSOS(这里很烦的,这个东西猜不准我的目标架构)
比如我给的值就是GUESSOS=armv7-hisi-3520d-linux2,中间的随意填,只要注意他的命名规则就好了
然后,make ,make install 就好了(其实有兴趣的可以去研究那个叫做Configure的文件,并直接执行这个脚本就可以配置完成了,但是在linux下,这样不推荐,config脚本也是调用的Configure的那个脚本)
2019/5/17更新
关于交叉编译,其实其INSTALL文件中有一段说明:
意思就是让我们直接修改Configure脚本,然后得到自己想要的架构的库。经过一番研究发现,大概需要如下步骤:
1 首先查看适合你的架构
这里的话,我板子是armv7的,所以我选择linux-armv4,如果是64位的,就选择linux-aarch64.
但是这样还不够,因为我们还需要指定编译相关的工具名字,这里需要直接去修改Cofigure脚本。
2 修改如下:
3 然后执行:./Configure linux-armv4 --prefix=xxx shared
4 make -j 16 && make install
- 移植zlib-1.2.11,下载地址(http://www.zlib.net/),这个我没有找到好的方法,只有通过原始的改Makefile来实现。首先
./config --prefix=/.../.../.../zlib_install
把makefile里面的CC,LDSHARED,CPP,AR,RANLIB等变量中编译链接相关的东西,改为交叉工具链中对应的东西。然后make,make install
- 开始正题。
./configure --host=arm-hisiv400-linux-gnueabi --with-libs --with-zlib=/home/sky/hisi3520d/Work/install --with-ssl-dir=/home/sky/hisi3520d/Work/install --disable-etc-default-login CC=arm-hisiv400-linux-gnueabi-gcc AR=arm-hisiv400-linux-gnueabi-ar
然后make就可以了。最终生成的openssh相关的可执行程序在根目录。
特此说明:configure 脚本可通过--prefix参数来配置实际的安装目录,编译生成的程序写死这个目录,若不想使用默认的配置,建议使用此参数配置
最后相关的安装步骤在:http://blog.csdn.net/u011728480/article/details/78969958
后记
无
参考文献
- 无
打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)
PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。
移植openssh-7.5p1(包括openssl-1.0.2l、zlib-1.2.11)到HISI3520d(编译篇)的更多相关文章
- windows 下编译 OpenSSL1.0.2l 版
1.需要的软件工具: microsoft visual studio2013(或2010以后其他版本) Perl 软件, 版本为strawberry - perl - 5.26.0.1 - 64bit ...
- 移植openssh到nuc951 evb板
移植openssh到nuc951 evb板 一 应用环境: 硬件:nuc951evb 软件:linux2.6.35 bsp 二 交叉编译openssl openssh 1.下载 openssl-1.0 ...
- 移植openssh到arm linux
一.在移植之前需要准备做一些前期准备: 1.移植zlib库 1.1获取zlib源码 1.2解压 tar xvf zlib-1.2.11.tar.xz 1.3交叉编译 1.3.1 指定交叉编译器 exp ...
- python3 安装 #zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz RHEL 8 install Python 3 or Python 2 using yum 编译安装 python3.7.4 . OpenSSL 1.0.2 or 1.1. Consequently, OpenSSL 0.9.8 and 1.0
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz Modules/Setup.dist https://askubuntu ...
- OpenSSL 1.0.2e 3 Dec 2015
目录: 1,交叉编译openssl 2,win32 vc9 编译 openssl 1,交叉编译openssl [原]交叉编译openssl不修改Makefile的方法 http://blog.chi ...
- vs2008环境nmake编译 apache 2.2.29 openssl 1.0.1g mod_ssl 不知道如何生成“"..\..\srclib\openssl\inc32\openssl\store.h"”
问题: vs2008环境nmake编译 apache 2.2.29 openssl 1.0.1g mod_ssl 不知道如何生成“"..\..\srclib\openssl\inc32\op ...
- OpenSSL 1.0.0生成p12、jks、crt等格式证书的命令个过程(转)
OpenSSL 1.0.0生成p12.jks.crt等格式证书的命令个过程 此生成的证书可用于浏览器.java.tomcat.c++等.在此备忘! 1.创建根证私钥命令:openssl g ...
- OpenSSL 1.0.0生成p12、jks、crt等格式证书的命令个过程 -参考自http://lavasoft.blog.51cto.com/62575/1104993/
OpenSSL 1.0.0生成p12.jks.crt等格式证书的命令个过程 此生成的证书可用于浏览器.java.tomcat.c++等.在此备忘! 1.创建根证私钥命令:openssl g ...
- centos下从源码安装openssl 1.0.1g
cd /usr/srcwget https://www.openssl.org/source/openssl-1.0.1g.tar.gz -O openssl-1.0.1g.tar.gz tar -z ...
- 2014年第一季度Oracle PSU更新(包括10.2.0.4+版本号全部PSU信息)
2014年第一季度的PSU更新主要是3个版本号:12.1.11.2.0.4.11.2.0.3以及11.1.0.7. 在第2季度Oracle 将公布12.1.0.2,同一时候11.2.0.4版本号也将是 ...
随机推荐
- Linux 进程卡住了怎么办?
在我们使用 Linux 系统时,如果网络或者磁盘等 I/O 出问题,会发现进程卡住了,即使用 kill -9 也无法杀掉进程,很多常用的调试工具,比如 strace, pstack 等也都失灵了,是怎 ...
- mit6.824lab2D-Debug记录
1.死锁 要提交快照的时候由于没有人取走applyCh通道里面的东西,导致死锁. 具体解释: 2D的测试代码中在日志达到一定大小时会调用snapshot,该函数需要申请rf.mu这个互斥锁.而在提交普 ...
- 零基础入门学习Java课堂笔记 ——day02
流程控制 1.Scanner对象 来源:java.util.Scanner 我们可以通过Scanner类来获取用户的输入输出 用户交互Scanner 通过new关键词创建Scanner对象 Scann ...
- MySQL架构体系介绍
一.MySQL的完整架构体系 MySQL完整的架构体系: (1)Connectors 指的是不同语言中与SQL的交互. (2)Connection Pool 管理缓冲用户连接,线程处理等需要缓存的需求 ...
- 用set做一轮无重复纯随机
前端时间面腾讯的时候,一位老师问了一个相当有趣的问题:假设存在一个音乐播放器,里面有一个100首歌的歌单.现在需要做一个随机播放功能,要求不重复的随机播放完一百首歌.当时脑子短路了没想出来,几天突然意 ...
- NC15445 wyh的吃鸡
题目链接 题目 题目描述 最近吃鸡游戏非常火,你们wyh学长也在玩这款游戏,这款游戏有一个非常重要的过程,就是要跑到安全区内,否则就会中毒持续消耗血量,我们这个问题简化如下 假设地图为n*n的一个图, ...
- nginx 配置stream模块代理并开启日志配置
前言 nginx 1.20.1nginx从1.9.0开始,新增加了一个stream模块确保nginx 安装时开启stream模块 ./configure \ -- \--with-stream \ - ...
- java 从零开始手写 redis(11)clock时钟淘汰算法详解及实现
前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...
- STC12硬件SPI驱动MAX7219点阵LED
max7219是一个用于驱动8位7段数字LED或者8x8点阵LED的驱动芯片, 以列扫描的方式, 用16个pin管理64个发光点, 显示8个数字时刷新率为500-1300Hz, 典型值为800Hz. ...
- Oracle正则表达式实战
原文链接:http://oracle-base.com/articles/misc/regular-expressions-support-in-oracle.php Introduction Exa ...