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


  1. 首先配置好官方的SDK,工具链必须是hisiv400的,这个工具链是glibc版本的,同时为了保持和内核的兼容性。

  2. 首先找到当前openssh的稳定版本,下载地址为下面的地址,版本为7.5p1

    ftp://mirror.internode.on.net/pub/OpenBSD/OpenSSH/portable/

    下载解压后,这里有一个文件希望大家在移植前先读一读根目录下一个叫做INSTALL的文本文件,特别是关于依赖的zlib和openssl兼容版本部分(下图已圈出重点)。下面是截图:

  友情提示:一定要选择 《 版本合适 》 的zlib和openssl,不然最后编译不过openssh,我就是踩了这个坑。

  1. 移植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

  1. 移植zlib-1.2.11,下载地址(http://www.zlib.net/),这个我没有找到好的方法,只有通过原始的改Makefile来实现。首先
./config --prefix=/.../.../.../zlib_install

  把makefile里面的CC,LDSHARED,CPP,AR,RANLIB等变量中编译链接相关的东西,改为交叉工具链中对应的东西。然后make,make install

  1. 开始正题。
./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(编译篇)的更多相关文章

  1. windows 下编译 OpenSSL1.0.2l 版

    1.需要的软件工具: microsoft visual studio2013(或2010以后其他版本) Perl 软件, 版本为strawberry - perl - 5.26.0.1 - 64bit ...

  2. 移植openssh到nuc951 evb板

    移植openssh到nuc951 evb板 一 应用环境: 硬件:nuc951evb 软件:linux2.6.35 bsp 二 交叉编译openssl openssh 1.下载 openssl-1.0 ...

  3. 移植openssh到arm linux

    一.在移植之前需要准备做一些前期准备: 1.移植zlib库 1.1获取zlib源码 1.2解压 tar xvf zlib-1.2.11.tar.xz 1.3交叉编译 1.3.1 指定交叉编译器 exp ...

  4. 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 ...

  5. OpenSSL 1.0.2e 3 Dec 2015

    目录: 1,交叉编译openssl 2,win32  vc9 编译 openssl 1,交叉编译openssl [原]交叉编译openssl不修改Makefile的方法 http://blog.chi ...

  6. 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 ...

  7. OpenSSL 1.0.0生成p12、jks、crt等格式证书的命令个过程(转)

    OpenSSL 1.0.0生成p12.jks.crt等格式证书的命令个过程   此生成的证书可用于浏览器.java.tomcat.c++等.在此备忘!     1.创建根证私钥命令:openssl g ...

  8. 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 ...

  9. 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 ...

  10. 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版本号也将是 ...

随机推荐

  1. SuperObject 的创建类型重大发现

    原来每当到自己创建数组加对象的时候就很头疼,原来是这样搞的,这次是清晰了 向数组里增加对象就用这个了: MySo.AsArray.Add(SO('{"爱好":["编程&q ...

  2. MySQL的执行流程和执行顺序

    MySQL执行过程以及顺序 前言:MySQL在我们的开发中基本每天都要面对的,作为开发中的数据的来源,MySQL承担者存储数据和读写数据的职责.因为学习和了解MySQL是至关重要的,那么当我们在客户端 ...

  3. 【架构师视角系列】QConfig配置中心系列之架构设计(一)

    目录 声明 配置中心系列文章 一.架构 基础模型 架构图 架构分层 运行规则 模块划分 Admin模块 Client模块 Server模块 二.总结 三.最后 声明 原创文章,转载请标注.https: ...

  4. NC17890 方格填色

    题目链接 题目 题目描述 给一个m x n的方格,Applese想要给方格填上颜色,每个格子可以是黑色或者白色.他要求左右相邻两格不能同为白色且相邻两列不能全为黑色. 求满足条件的方案数. 输入描述 ...

  5. Nginx开启gzip提升访问效率

    说明 最近网站考虑开启gzip压缩试试效果,gzip是nginx服务器的ngx_http_gzip_module模块提供的在线实时数据压缩功能. 通过开启gzip功能,可对服务器响应的数据进行压缩处理 ...

  6. ftp 出现Passive mode refused 解决办法

    在shell中调用FTP出现下面错误时, Permission denied. Passive mode refused. Permission denied. Passive mode refuse ...

  7. .Net 6 WebAPI 使用JWT进行 授权认证配置

    .Net 6 WebAPI 使用JWT进行 授权认证 1.安装组件(Nuget) Microsoft.AspNetCore.Authentication.JwtBearer 2.Program.cs ...

  8. linux下MariaDB安装

    一条命令安装Mariadb 首先在/etc/yum.repos.d下创建一个MariaDB.repo文件 vim /etc/yum.repos.d/MariaDB.repo 添加以下配置 [maria ...

  9. 【LeetCode链表#12】链表相交

    链表相交 同:160.链表相交 力扣题目链接(opens new window) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返 ...

  10. 第140篇:微信小程序的登录流程

    好家伙,补补补   顶不住了,跑不掉了,这部分的知识还是要补上   来看看微信小程序登录的完整流程   最左边的一列就是前端负责的部分了 几个关键的参数: code:一个用户登录凭证,就是一个临时的t ...