之前交叉编译那个sysbench感觉好轻松啊,一下子就OK了,还运行起来了,跑跑分(的确费时间,默认参数下),挺开心的呢,那么Linux下这么多开源的软件,是不是也可以跑跑呢,事不宜迟,来吧,这次猪脚是Openssh,这是一个很明确的需求,为什么这么说,现在系统上比较麻烦的事情是什么,没法SSH过去,只能串口,好烦人的呢,串口嘛,又占我USB,我电脑可破,只有三个USB口.下载源码就要三份,为什么呢,因为openssh依赖openssl,而openssl依赖zlib,zlib依赖基础C库,基础C库我们是动态连接的,没什么压力,为什么是这个依赖关系,就需要去问问openssh这人了,当然,在编译过程中,会因为缺乏库,而有提示,上次编译sysbench时候,应该已经有相关的指导~
首先三个包的下载地址:
关于解压的问题,我相信不需要教了吧,这个可以随时谷歌到的,然后新建一个install目录,用来存放编译结果.
make install
的然后切到最底端zlib库的依赖,进行配置编译~ [你应该不会把用户名也抄了吧]
CC=arm-fsl-linux-gnueabi-gcc ./configure --prefix=/home/tater/work/openssh/install/
然后make;make install搞定:
的然后切换到openssl目录编译[第一个字母的确是大写],接下来继续make,make install:
./Configure --prefix=/home/tater/work/openssh/install os/compiler:arm-fsl-linux-gnueabi-gcc
接着切换到外面的install目录,检查是否有libz的库,以及openssl的程序,并用file检查是否为ARM.
切换到openssh目录,然后:
CC=arm-fsl-linux-gnueabi-gcc AR=arm-fsl-linux-gnueabi-ar ./configure –host=arm-fsl-linux-gnueabi –with-libs –with-zlib=/home/tater/work/openssh/install –with-ssl-dir=/home/tater/work/openssh/install –disable-etc-default-login
接着检查有没有错误就可以make,不用make install哦:
紧张的make,马上就成功了:
然后开始手工安装文件,先切换到install下,列举发现没有usr/local目录耶:
新建几个目录:
mkdir usr
mkdir usr/local
mkdir usr/local/bin
mkdir usr/local/etc
mkdir usr/local/libexec
mkdir usr/local/sbin
然后复制文件:
cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan ../install/usr/local/bin/
cp moduli ssh_config sshd_config ../install/usr/local/etc/
cp sftp-server ssh-keysign ../install/usr/local/libexec/
cp sshd ../install/usr/local/sbin/
然后还要生成ssh-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这3个文件复制到目标板的../install/usr/local/etc/目录下.最后就是打包install目录下来,到目标板覆盖解压了,然后修改目标板的/etc/passwd文件,加一行:
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
然后重启后就可以用完整的SSH了.说实话程序有点大~ 所以大多数人还是用Dropbear.