精华内容
下载资源
问答
  • 交叉编译ssh
    2021-05-14 20:33:49

    将Openssh 移植到ARM Linux目标板

    下载最新版本的openssh-6.0p1 openssl-2.0.1 和 zlib-1.2.7 最后一步配置ssh出错

    使用低版本的ssh和

    ssl(zlib-1.2.7可以使用)原因不明

    最终使用版本:

    openssh-4.6p1

    openssl-0.9.8e

    zlib-1.2.7

    源码下载地址:

    openssh http://www.openssh.com/portable.html

    openssl http://www.openssl.org/source

    zlib  http://www.zlib.net/

    (一) zlib openssl openssh交叉编译 (交叉编译器为

    arm-hismall-linux-gcc)

    1 下载源码包,地址如下:

    openssh http://www.openssh.com/portable.html

    openssl http://www.openssl.org/source

    zlib  http://www.zlib.net/

    2 交叉编译

    在/work目下面创建ssh目录

    # mkdir /work/lib  ----〉共享库目录,通过nfs挂载

    # mkdir /work/ssh  -----〉工作目录

    # cd  /work/ssh

    # mkdir compressed install source

    -----〉compressed 用于存放源码包

    Install

    软件安装目录

    Source

    源码包解压目录

    #mv tarpakgs/openssh-4.6p1.tar.gz  /work/ssh/compressed

    #mv tarpakgs/openssl-0.9.8e.tar.gz

    /work/ssh/compressed

    #mv tarpakgs/zlib-1.2.7.tar.tar  /work/ssh/compressed

    交叉编译 zlib

    # cd /work/ssh/compressed/

    # tar xvf zlib-1.2.7.tar.tar  -C

    ../source

    # cd ../source/zlib-1.2.7

    # ./configure --prefix=/work/ssh/install/zlib-1.2.7

    # vim Makefile

    CC=arm-hismall-linux-gcc

    AR=arm-hismall-linux-ar rc

    CPP =arm-hismall-linux-gcc -E

    LDSHARED=arm-hismall-linux-gcc

    (把gcc给改为arm-hismall-linux-gcc,ar改为arm-hismall-linux-gcc)

    # make

    # make install

    交叉编译openssl

    # cd /work/ssh/compressed/

    # tar zxvf openssl-0.9.8e.tar.gz  -C

    ../source

    # cd ../source/openssl-0.9.8e

    # ./Configure --prefix=/work/ssh/install/openssl-0.9.8e

    os/compiler:arm-hismall-linux-gcc

    如果报错:则修改Makefile文件

    #vim Makefile

    (将gcc给改为arm-hismall-linux-gcc,ar改为arm-hismall-linux-gcc)

    # make

    # make install

    交叉编译openssh

    # cd /work/ssh/compressed

    # tar zxvf openssh-4.6p1.tar.gz  –C

    ../source

    # cd ../source/ openssh-4.6p1

    #./configure --host=arm-9tdmi-linux-gnu --with-libs

    --with-zlib=/work/ssh/install/zlib-1.2.3

    --with-ssl-dir=/work/ssh/install/openssl-0.9.8e

    --disable-etc-default-login CC=arm-hismall-

    linux-gcc AR=arm-hismall-linux-ar

    #make

    # cd ../source/ openssh-4.6p1

    (二) 安装

    (1) 将openssh-4.6p1目录下的 sshd 拷贝到

    目标板的/usr/sbin目录下

    (2) 再copy scp  sftp

    ssh  ssh-add

    ssh-agent  ssh-keygen

    ssh-keyscan  到目标

    板/usr/local/bin目录下

    copy

    sftp-server  ssh-keysign  到/usr/local/libexec

    (3) 在目标板下:

    mkdir -p /usr/local/etc/

    ,然后将openssh下的sshd_config,ssh_config 拷贝到该目录下

    mkdir -p /var/run;

    mkdir -p /var/empty/sshd

    chmod 755 /var/empty

    (4) 添加用户:

    将主机上 /etc/目下的 passwd,

    shadow, group 三个文件copy到目标板的 /etc目录下, 同时记得将

    passwd的最后 /bin/bash 该为 /bin/sh  (将原passwd,

    shadow, group做副本)

    ( 其实可以删除不需要的一些用户。

    这一步也可以这样,在目标板的passwd中添加sshd用户:

    sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin

    在shadow中也添加对应的项就行了:

    sshd:!:14069:0:99999:7:::)

    (5)libz.so.1.2.7 拷贝到目标板

    /usr/local/lib/(可能是/lib)目录下

    然后建立软连接

    ln -s

    libz.so.1.2.7 libz.so.1

    (6) 在目标板中生成key文件

    #cd /usr/local/bin

    #ssh-keygen -t rsa1 -f ssh_host_key -N ""

    #ssh-keygen -t rsa -f ssh_host_rsa_key -N

    ""

    #ssh-keygen -t dsa -f ssh_host_dsa_key -N

    ""

    生成6个ssh_host_..文件:ssh_host_dsa_key ssh_host_dsa_key.pub

    ssh_host_key

    ssh_host_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub

    将生成的6个文件拷贝到/usr/local/etc

    #cp /usr/local/bin/ssh_host_* /usr/local/etc

    (三) 测试

    目标板中启动ssh

    (出现错误:sshd re-exec requires execution with an absolute

    path;运行方式不对,应采用

    下面的运行方式)

    # /usr/sbin/sshd

    (出现错误:去ssh_config或sshd_config注释掉相关代码行)

    ps ax 查看目标板是否有sshd的进程,有则运行成功

    主机连接目标板

    #ssh 192.168.*.*

    (出现错误:登陆输入密码后提示输入新密码;(1)更改系统时间到当前时间,在目标板重新生成ssh_host_..文件.(2)更改拷贝过来的passwd

    group shadow文件; 具体错误原因不明)

    输入用户名密码

    连接成功

    更多相关内容
  • 海思平台交叉编译ssh

    2022-05-19 20:02:11
    /usr/local/bin/ /usr/local/sbin/ /usr/local/etc/ /usr/local/libexec/ /var/run/ /var/empty/ (1)将交叉编译主机xxx/source/openssh-6.2p1/目录中 scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-...

    1、下载对应的源码

    1.下载源码包
    openssh  http://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/
    openssl  https://www.openssl.org/source/old/1.0.1/
    zlib     http://www.zlib.net/

    mkdir install pack source

    目录 pack用于存放源码压缩包

    目录install用于软件安装目录

    目录source 用于源码目录

    2、交叉编译zlib

    cd xxx/source/zlib-1.2.11
    
    ./configure --prefix=xxx/install/zlib-1.2.11
    
    修改Makefile:  注明 根据自己的交叉编译进行配置
    
    CC=arm-hisiv300-linux-gcc
    AR=arm-hisiv300-linux-ar
    CPP =arm-hisiv300-linux-gcc -E
    LDSHARED=arm-hisiv300-linux-gcc
    
    make
    
    make install
    

    例子: ./configure --prefix=/home/dawn/EMA_tech/SambaShare/common/bin/arm/bin/HI3516A/bin/install/zlib-1.2.11

     3.交叉编译openssl

    cd xxx/source/openssl-0.9.8l  
    
    注明os/compiler: 为交叉编译工具链
    ./configure --prefix=xxx/install/openssl-0.9.8l  
    os/compiler:xxx/arm-hisiv300-linux-gcc
    
    make 
    
    make install
    

    例子:./Configure --prefix=xxx/install/openssl-0.9.8l os/compiler:/opt/hisi-linux/x86-arm/arm-hisiv510-linux/bin/arm-hisiv510-linux-uclibcgnueabi-gcc

     4、交叉编译openssh

    cd xxx/source/openssh-6.2p1
    
    注:交叉编译链根据直接的路径进行选择
    
    ./configure --host=arm-hisiv300-linux 
                --with-libs 
                --with-zlib=xxx/install/zlib-1.2.11 
                --with-ssl-dir=xxx/install/openssl-0.9.8l 
                --disable-etc-default-login 
                CC=xxx/arm-hisiv300-linux-gcc 
                AR=xxx/arm-hisiv300-linux-ar
    
    make

    例子:./configure --host=arm-hisiv510-linux-uclibcgnueabi

    --with-libs --with-zlib=xxx/install/zlib-1.2.11

    --with-ssl-dir=xxx/install/openssl-0.9.8l/

    --disable-etc-default-login 

    CC=xxx/arm-hisiv510-linux-uclibcgnueabi-gcc

    AR=xxx/arm-hisiv510-linux-uclibcgnueabi-ar

    5、编译成功后安装目录出现对应的文件

    6.将编译好的文件和库放到开发板相关的目录

    确保开发板有一下目录,如果没有则创建.

    /usr/local/bin/
    
    /usr/local/sbin/
    
    /usr/local/etc/
    
    /usr/local/libexec/
    
    /var/run/
    
    /var/empty/

    (1)将交叉编译主机xxx/source/openssh-6.2p1/目录中

            scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan、

            拷贝到开发板/usr/local/bin/

    (2)sshd 拷贝到开发板 /usr/local/sbin/

    (3)moduli ssh_config sshd_config拷贝到开发板/usr/local/etc/

    (4)sftp-server  ssh-keysign 拷貝到目标板/usr/local/libexec

    cdxxx/source/openssh-6.2p1/目录 , 生成key文件

    ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
    ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
    ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
    

    将生成的 ssh_host_*_key这3ge文件copy到开发板的 /usr/local/etc/目录下,或者在 /usr/local/etc/目录直接使用命令生成文件

    接着在开发板中看看有没有/usr/lib目录,如果没有就创建,将交差编译主机的/work/ssh/install/zlib-1.2.11/lib目录中的libz.so.1文件拷贝到开发板/usr/lib/目录下

    7.修改开发板的passwd文件

    在开发板/etc/passwd 中添加下面这一行
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

     

    8.测试

    在开发板运行
    #/usr/local/sbin/sshd
    可以用ps命令查看sshd是否在工作

     

    展开全文
  • 下载源码包,地址如下: openssh http://www.openssh.com/portable.html openssl http://www.openssl.org/source zlib http://www.zlib.net/ 2.交叉编译 创建工作目录: #mkdir /work #cd /work
  • 包含完整的编译过程,源码和介绍,海思开发板支持openssh7.8, 其中包含 OpenSSH_7.8p1, OpenSSL 1.0.2p;完整的可运行的运行包;包括弱加密算法;sshd_config的介绍;
  • 交叉编译ssh服务到ARM开发板

    遇到的问题

    在同一个局域网下,ubuntu linux和开发板能 ping 通,但是 scp 传文件到开发板失败了,提示ssh remote_ip **** lose connection connection timeout

    原因在于开发板上板子没有启动 sshd 这个服务 ,不然连不上的,然后发现板子上并没有sshd
    因此需要交叉编译ssh服务到开发板上才能使用相关应用,这篇博客浅浅记录一下整个过程,一站式脚本用的也更得心应手了

    编译环境

    1. Ubuntu16.04 x86_64
    2. 交叉编译工具arm-linux-gnueabihf
    3. 板子ZYNQ7010,ARM平台 cortexa9

    准备编译

    以下均采用脚本进行编译,可自行根据脚本 download_package () 中的下载地址下载包并存放在 compressed 目录中,如图

    在这里插入图片描述

    开始编译

    在一个空目录下新建一个脚本 ,如auto_compile.sh ,写入以下内容

    #!/bin/sh
    
    BASE=`pwd`
    BUILD_HOST=arm-linux-gnueabihf
    OUTPUT_PATH=${BASE}/arm_install
    
    make_dirs () {
        cd ${BASE} && mkdir compressed arm_install source -p
    }
    
    download_package () {
        cd ${BASE}/compressed
        wget https://www.zlib.net/fossils/zlib-1.2.12.tar.gz
        wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz
        wget http://ftp5.usa.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz
    }
    
    tar_package () {
        cd ${BASE}/compressed
        ls * > /tmp/list.txt
        for TAR in `cat /tmp/list.txt`
        do
            tar -xf $TAR -C  ../source
        done
        rm -rf /tmp/list.txt
    }
    
    set_env () {
        source /opt/pkg/petalinux/2018.3/settings.sh
    }
    
    make_zlib () {
        cd ${BASE}/source/zlib*
    
        ./configure --prefix=${OUTPUT_PATH}/zlib
    
        #Makefile 中的gcc和ar替换成自己的
        sed -i '19,19s/gcc/arm-linux-gnueabihf-gcc/g' Makefile
        sed -i '30,30s/gcc/arm-linux-gnueabihf-gcc/g' Makefile
        sed -i '31,31s/gcc/arm-linux-gnueabihf-gcc/g' Makefile
        sed -i '39,39s/ar/arm-linux-gnueabihf-ar/g' Makefile
    
        make -j8 && make install
    }
    
    make_openssl () {
        cd ${BASE}/source/openssl*
    
        ./config shared no-asm \
        --prefix=${OUTPUT_PATH}/openssl \
        --openssldir=${BASE}/source/openssl-1.1.1q/ssl
    
        #CROSS_COMPILE= 添加 arm-linux-gnueabihf-
        sed -i '92,92s/CROSS_COMPILE=/CROSS_COMPILE=arm-linux-gnueabihf-/g' Makefile
        #去掉 -m64 标签,否则会报错
        sed -i '126,126s/-m64//g' Makefile
        sed -i '127,127s/-m64//g' Makefile
        sed -i '129,129s/-m64//g' Makefile
    
        make -j8 && make install
    }
    
    make_openssh () {
        cd ${BASE}/source/openssh*
    
        ./configure --host=arm-linux \
        --with-zlib=${OUTPUT_PATH}/zlib \
        --with-ssl-dir=${OUTPUT_PATH}/openssl \
        --disable-etc-default-login --disable-strip \
        CC=${BUILD_HOST}-gcc \
        AR=${BUILD_HOST}-ar
    
        make -j8
    }
    
    make_dirs
    set_env
    tar_package
    make_zlib
    make_openssl
    make_openssh
    

    移植到开发板

    1.新建目录

    查看开发板上有没有以下目录,若没有,则新建:

    /usr/local/bin/ 
    /usr/local/sbin/ 
    /usr/local/etc/ 
    /usr/local/libexec/ 
    /var/run/ 
    /var/empty/
    

    2.拷贝文件

    cd **/source/openssh-9.0p1
    
    sudo cp scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan /media/hammer/rootfs/usr/local/bin
    sudo cp moduli ssh_config sshd_config /media/hammer/rootfs/usr/local/etc
    sudo cp sftp-server  ssh-keysign /media/hammer/rootfs/usr/local/libexec
    sudo cp sshd /media/hammer/rootfs/usr/local/sbin/
    
    sync
    

    3.生成key文件

    cd **/source/openssh-9.0p1
    
    ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
    ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
    ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
    
    sudo cp ssh_host_*_key /media/hammer/rootfs/usr/local/etc/
    

    4.修改开发板passwd文件

    sudo vi /etc/passwd
    #在最后添加一行
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    

    上板测试

    ssh root@remote_ip
    scp file root@remote_folder
    

    参考博客

    arm交叉编译 sshd服务

    展开全文
  • 交叉编译详解

    2022-06-30 15:48:20
    在嵌入式开发中,经常会提到交叉编译,那么什么是交叉编译?和我们本地编译有什么区别呢?怎么使用交叉编译工具呢?在问题之前,我们先简单说明下编译,用本地编译来对比说明。在程序开发中,使用高级语言编写的代码...

    前言

    在嵌入式开发中,经常会提到交叉编译,那么什么是交叉编译?和我们本地编译有什么区别呢?怎么使用交叉编译工具呢?

    在问题之前,我们先简单说明下编译,用本地编译来对比说明。

    在程序开发中,使用高级语言编写的代码被称为源代码,比如用C语言编写的后缀名为.c的文件,或者C++编写的后缀名为.cpp的文件。源代码不能被机器执行,必须转换成二进制的机器代码(指令+数据)才能被CPU执行。将源代码转换成机器代码的过程称为编译(Compile),编译的工作需要编译器(Complier)来完成。

    编译器对源代码进行语法检查,只有没有语法错误的源代码才能被编译通过。源代码经过编译后,并没有生成最终的可执行文件,而是生成一种被称为目标文件(Object File)的中间文件。比如,Visual C++的目标文件后缀名为.obj,而GCC的目标文件后缀名为.o

    源代码可能包含多个源文件,比如main.c/fun1.c/fun2.c等等,编译器会对源文件逐个进行编译。因此,有几个源文件,就会生成几个目标文件;目标文件并不能被执行,因为它可能存在一些问题,比如源文件之间的引用关系导致的问题。

    举个例子:文件A.c引用了文件B.c中的变量"EXT_someflag",A.c和B.c分别编译生成A.o和B.o,A.o中并没有变量"EXT_someflag"的定义,必须依靠B.o才能形成完整的代码。

    把经过编译后生成的目标文件,按照其内在引用关系彼此相连接而生成一个完整的、可执行的文件的过程称为链接,链接工作由链接器完成。

    因此,源文件生成可执行文件要经过编译和链接两个步骤才能完成。为了方便,我们也把这个过程统称为编译。

    交叉编译

    本地编译(编译)
    “本地编译”(通常称编译),是指编译源代码的平台和执行源代码编译后程序的平台是同一个平台(是在一个平台上生成在该平台上的可执行代码)这里的平台,可以理解为CPU架构+操作系统。比如,在Intel x86架构/Windows 10平台下、使用Visual C++编译生成的可执行文件,在同样的Intel x86架构/Windows 10下运行。

    交叉编译是在一个平台上生成另一个平台上的可执行代码。
    比如:我们在windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行。

    再如:我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上面运行,不是在ubuntu linux上面运行。

    交叉编译是相对复杂的,必须考虑如下几个问题:

    CPU架构:比如ARM,x86,MIPS等等;
    字节序:大端(big-endian)和小端(little-endian);
    浮点数的支持;
    应用程序二进制接口(Application Binary Interface,ABI)。

    为什么要交叉编译?

    • 有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征。
    • 有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器。
    • 有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
      (操作系统也是代码,也需要编译。)平台运行至少需要两个东西,bootloader(启动引导代码)以及操作系统核心。

    宿主机和目标机
    宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
    目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。

    交叉编译工具

    交叉编译需要使用交叉编译器、交叉编译工具链。

    要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。常见的交叉编译例子如下:
    1、在Windows PC上,利用ADS(ARM开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。
    2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。
    3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。

    交叉编译工具链的安装

    交叉编译工具链去树莓派官网安装。网址:https://github.com/raspberrypi/

    1. 将压缩包放在工作目录。

    我的是从共享文件夹拷贝到ubuntu工作目录
    cp /mnt/hgfs/share/tools-master.zip .

    1. 解压

    unzip tools-master.zip

    1. 配置环境变量
    • 3.1配置临时环境变量

    export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/SXH/raspberry/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

    pwd获得工作目录路径

    cd /home/SXH/raspberry/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

    echo $PATH 获得当前环境变量的值

    /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

    • 3.2配置永久环境变量

    修改工作目录下的.bashrc 隐藏文件

    vi /home/SXH/.bashrc

    在文件最后一行加入下面的语句(前面是自己当前的环境变量,后面是你自己的工作目录路径,不要忘了加:)

    export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/SXH/raspberry/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

    然后加载配置文件,马上生效配置

    source /home/SXH/.bashrc

    执行编译

    首先检查下编译工具的版本号

    arm-linux-gnueabihf-gcc -v

    准备材料
    1.pc
    2.树莓派3b

    我的history

    1809 vi test.c
    1810 gcc test.c -o pctest
    1811 arm-linux-gnueabihf-gcc test.c -o armtest
    1812 ls
    1813 file pctest
    1814 file armtest
    1815 ./pctest
    1816 ./armtest
    1817 scp armtest pi@192.168.2.43:/home/pi

    其中 scp armtest pi@192.168.2.43:/home/pi
    语法为scp 命令是用于通过 SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令。使用 SSH 意味着它享有与 SSH 相同级别的数据加密,因此被认为是跨两个远程主机传输文件的安全方式。
    scp [option] /path/to/source/file user@server-ip:/path/to/destination/directory
    /path/to/source/file – 这是打算复制到远程主机的源文件。
    user@server-IP: – 这是远程系统的用户名和 IP 地址。请注意 IP 地址后面加冒号。
    /path/to/destination/directory – 这是文件将复制到的远程系统上的目标目录。
    以下是scp命令常用的几个选项:
    -C - 这会在复制过程中压缩文件或目录。
    -P - 如果默认 SSH 端口不是 22,则使用此选项指定 SSH 端口。
    -r - 此选项递归复制目录及其内容。
    -p - 保留文件的访问和修改时间。
    举例:scp demo1.c SXH@192.168.2.42:/home/SXH/raspberry

    如图所示:
    在这里插入图片描述
    我们可以看到在Linux上执行可执行文件pctest可以打印结果,而执行可执行文件armtest反而出错bash: ./armtest: cannot execute binary file,在Linux编辑,在arm运行。

    如图是arm crt显示终端:
    在这里插入图片描述

    带wiringPi库的交叉编译如何进行

    条件:需要树莓派的专用库。

    • 正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的时候,链接库的格式也是正确的。

    • 通过-I -L来指定

    • 因为链接的库的格式不对,是宿主机的平台,出现以下错误
      arm-linux-gnueabihf-gcc demo2.c -I /home/SXH/raspberry/WiringPi/wiringPi -lwiringPi
      /home/SXH/raspberry/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/…/lib/gcc/arm-linux-gnueabihf/4.8.3/…/…/…/…/arm-linux-gnueabihf/bin/ld: cannot find -lwiringPi
      collect2: error: ld returned 1 exit status

    • 把树莓派的wringPI库拿上来用

    • arm-linux-gnueabihf-gcc demo1.c -I /home/SXH/raspberry/WiringPi/WiringPi/wiringPi -L . -lwiringPi
      ( 交叉编译工具连编译的格式 要编译的文件 -I指定头文件的路径(不然不认识,默认/usr/local/lib/路径) -L指定检索库的路径)

    总结

    交叉编译就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的都是Linux系统。 交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc三个部分组成。有时出于减小 libc 库大小的考虑,也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。

    展开全文
  • 交叉编译openssh.tar.bz2运行在armlinux上,用的openssl-1.1.0f;zlib-1.2.11;openssh-5.6p1三者交叉编译而成,交叉编译工具链是arm-none-linux-gnueabi-...该包中的密钥文件最好自己去重新生成,路径是openssh/usr/...
  • 交叉编译openssh

    千次阅读 2020-01-05 23:29:25
    准备工作 openssh源码根目录新建external_dependency_libs ...编译并将交叉编译的文件打包 #!/usr/bin/env bash #filename: build_hisi.sh PROJECT_DIR=$PWD EXT_DEPEND_LIBS_PATH=$PROJECT_DIR/external_depen...
  • 1.交叉编译openssl ./config no-asm -shared --prefix=/home/yiweijiao/openssh/ssl --cross-compile-prefix=/home/yiweijiao/toolchains/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin/arm-linux-...
  • 本人已测试成功,压缩包内有如下文件 1、编译zlib、openssl、openssh的脚本 2、打包openssh的脚本 3、部署到3559A的脚本
  • arm linux openssh交叉编译出现如下错误时间:2019-10-09 11:26:02关键字:[导读]版本:openssh-6.3P1尝试了许多方法,始终无法解决这种错误,修改了头文件,旧的错误没了,其他文件又会出现类似错误,最后还是必须...
  • 1、交叉编译openssl、openssh 的过程见我的上一篇博客:https://blog.csdn.net/sinat_38687734/article/details/105980314 2、移植过程:其实可以根据自己的需要来进行移植,全部移植如下: 在目标板上新建这些目录...
  • 功能: ssh海思3531a交叉编译,使3531a板子支持scp协议,文件和windows通过WinSCP工具自由 的传输和拖拽 参考: https://www.itdaan.com/tw/96d6707f3cff 1.下载源码包 openssh http://mirror.aarnet.edu.au...
  • 有基于海思3531a 交叉编译文档,
  • 交叉编译轻量级Dropbear SSH

    千次阅读 2020-07-02 23:05:36
    交叉编译轻量级Dropbear SSH使用版本编译zlib-1.2.11 编译dropbear-2020.80 编译使用 使用版本 dropbear-2020.80.tar.bz2 zlib-1.2.11.tar.gz 编译器为 Xilinx SDK 2017.4 软件版本的中带的编译器 编译 zlib-1.2.11 ...
  • 1.3 SSH移植日志

    2022-05-04 10:29:17
    然后再调试内存子系统时,发现无法从外部访问该os,没有ssh,没有adb,也无法用串口,所以这部分是为了将ssh移植打包到我们的os当中,以满足访问虚拟机或者开发板进行调试。后期也会考虑移植adb,并在开发板上使用...
  • 嵌入式Linux平台,同时使用交叉编译以允许在单个基于Linux的开发系统上构建多个目标平台。 将ssh链接添加到设置ssh密钥使用2019.05.x作为上的分支 base_external / external.desc描述了外部树的名称。 添加脚本以...
  • Linux交叉编译dropbear使能SSH

    千次阅读 2018-08-31 14:38:51
    最近项目需要用到armv8 cpu的嵌入式精简的文件系统,但是busybox生成的文件系统只支持telnet,不支持ssh连接,而openssh的库又很大,不符合精简文件系统,想到了轻量级的...交叉编译链:aarch64-fsl-linux-gcc 工具...
  • 在进行嵌入式Linux开发的时候,为了方便,通常在Windows上使用代码编辑器编辑代码,交叉编译工具在Linux虚拟机或者服务器上,在开发期间需要不停的进行如下的循环操作: 编辑好代码,使用基于SSH的SCP将文件上传到...
  • 常用远程登录嵌入式linux系统板开发方式介绍 相信很多跑嵌入式linux的小伙伴都会经历搞块板子然后移植一个低版本的linux kernel...ssh则需要自己去交叉编译移植一下。 telnet简单粗暴又好用,自己开发用其实就够了...
  • 问题描述 在运行安装好的交叉编译链时出现了这个问题。 这个问题的主要原因是编译链中的GCC是32位版本,而wsl本身是不支持的。 解决方法 出处:https://ask.csdn.net/questions/767294 ...感谢他们的搬运,现将步骤...
  • 带wiringPi库的交叉编译如何进行 1.正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时交叉编译可执行程序的时候,链接库的格式也是正确的。 2.通过 -I -L来指定 但是经常会因为没办法交叉编译wiringPi库...
  • 但是之后要用开发板做3G模块的拨号上网等,自己用到无所谓带着usb转串口和开发板就行了,但是要这几个人一块使用这个开发板就成了问题,所以打算用wifi模块连到路由器然后ssh大家都可以连接到开发板进行开发,所以...
  • 本文期望您的 Mac 上安装了 Xcode 和 homebrew,并且您的 Raspberry Pi 运行 Linux 并设置为通过 ssh 登录。 为了为 Raspberry Pi 编译,我们需要 binutils 来组装和链接二进制文件,以及可以为 ARM CPU 生成代码的...
  • arm64位aarch64 交叉编译openssh

    千次阅读 2019-03-17 15:03:16
    arm64位aarch64 交叉编译ssh依赖库openssl编译部署openssl测试zlib编译部署openssh编译部署遇到的问题 依赖库 ssh由openssh交叉编译 openssh依赖zlib和openssl两个库 分别提供压缩和加密的功能 需要先交叉编译这两个...
  • GDB交叉编译

    2020-04-10 11:00:04
    在使用ubuntu16.04虚拟机的时候,每次开机然后想从gitlab同步代码都会报错: sign_and_send_pubkey: signing failed: agent refused operation 网上搜索是说ssh-agent没有启动。参考: ...
  • rk3399pro交叉编译工具链安装|qt安装

    千次阅读 2020-12-09 21:49:09
    下面介绍 Qt Creator 的使用说明,在操作前,请先按前面的步骤配置好交叉编译环境和运行环境。 安装 进入 Qt 官方下载页面,下载 qt-opensource-linux-x64-5.9.4.run,下载完成之后,运行安装,一路next。 配置 安装...
  • 本文的步骤如下: 在树莓派4上安装依赖包,并进行一些准备 在PC上安装QT Creator,下载源码,下载交叉编译工具工具链 将树莓派4上的库复制到到PC上做一个sysroot,交叉编译时用 配置,编译,安装到树莓派4上 在...
  • 如何快速在X86本机上交叉编译 ARM、MIPS等目标架构的开源代码库,尤其是开源代码依赖众多底层库时。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,741
精华内容 1,896
关键字:

交叉编译ssh