openssh9.6 源码编译与交叉编译

环境

  • ubunut18.04。x86平台
  • openssh9.6,这里我是要移植到别的机器。不是在本地使用
  • 所以我要编出两个版本 x86和arm

ubunut x86版本编译过程

准备工作

  1. centos
    sudo yum install pam-deval
  2. ubuntu
    sudo apt-get install libpam0g-dev
  • zlib开发库,一定下载开发库
    sudo apt install zlib1g-dev
  • openssl库
    检查是否已安装openssl:
    sudo apt-get install openssl
    如果已安装执行以下操作:
    sudo apt-get install libssl-dev
    sudo apt-get install libssl0.9.8

编译openssh

 ./configure --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --with-zlib=/usr/local/zlib --with-pam --without-openssl-header-check

参数解析:缺一不可
因为我的ssl和zlib是源码编译的所以位置是我指定的,然后--sysconfdir是sshd服务的默认配置文件的路径,需要写成你目标机器的sshd_config文件位置,不然你就需要指定路径,这里的with-pam的模块我是包管理工具安装的,所以是默认路径不需要指定
然后make 就可以
最后提取目标

make install prefix=./obj

所有文件都会提取到这里,可以打包到别的机器

image

交叉编译aarch64版本 openssh9.6

x86 ubuntu安装aarch64交叉编译工具
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

image

准备工作
openssh源码 https://www.openssh.com/portable.html
openssl源码
zlib源码
pam源码(看自己需求)
上面的自己找连接下载吧

交叉编译依赖
openssl

<配置自己工具链的环境变量>
<保证aarch64-linux-gnu- tab键能自动补全就可以,不需要CROSS_COMPILE CC CXX等环境变量>
tar -xzf openssl-OpenSSL_1_1_1a.tar.gz 
cd openssl-OpenSSL_1_1_1a/
./Configure linux-aarch64 --cross-compile-prefix=aarch64-linux-gnu-  --prefix=/home/wjk/install/openssl shared
make
make install

交叉编译zlib

export CROSS_COMPILE=aarch64-linux-gnu-
export CC=aarch64-linux-gnu-gcc
export AR=aarch64-linux-gnu-ar
export RANLIB=aarch64-linux-gnu-gcc-ranlib
CFLAGS="-fPIC" ./configure --shared --prefix=/home/wjk/install/zlib
make
make install

交叉编译openssh

./configure --host=aarch64-linux-gnu --prefix=/home/fangkai/openssh_bypass1043/openssh-9.6p1/build_x86 --with-ssl-dir=/home/fangkai/openssh_bypass1043/openssl-3.2.1/build_x86 --with-zlib=/home/fangkai/openssh_bypass1043/zlib-1.3.1/build_x86 --with-pam=/home/fangkai/openssh_bypass1043/linux-pam-1.6.0/build_x86 LDFLAGS="-static -pthread" --sysconfdir=/etc/ssh
make

然后把可执行文件和动态连接库拿到aarch64设备上就可以运行了

posted @ 2024-01-23 14:06  学不会xuebuhui  阅读(844)  评论(0编辑  收藏  举报
Language: javascript