genstone 发表于 2012-12-20 17:26:47

ubuntu交叉编译cubieboard arm可用的openssh-server

主机 ubuntu 12.10cubieboard sdcard安装linaro ubuntu12.04

在主机安装交叉编译环境,12.04用的是gcc4.6
apt-get build-essential gcc-4.6-arm-linux-gnueabihf

以下操作在主机上
wget http://jaist.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.bz2
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
wget http://mirror.yongbok.net/OpenBSD/OpenSSH/portable/openssh-6.1p1.tar.gz

1.交叉编译zlib
tar xf zlib-1.2.7.tar.bz2
cd zlib-1.2.7

修改zlib的Makefile如下:
CC=arm-linux-gnueabihf-gcc-4.6
LDSHARED=arm-linux-gnueabihf-gcc-4.6 -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=arm-linux-gnueabihf-gcc-4.6 -E
AR=arm-linux-gnueabihf-ar

./configure --prefix=/data/source/arm/openssh/install/zlib-1.2.7/usr
make && make install

2.交叉编译openssl
tar xf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./Configure --prefix=/data/source/arm/openssh/install/openssl-1.0.1c/usros/compiler:arm-linux-gnueabihf-gcc-4.6
make && make install

3.交叉编译openssh
tar xf openssh-6.1p1.tar.gz
cd openssh-6.1p1

./configure --host=arm-linux-gnueabihf --with-libs --with-zlib=/data/source/arm/openssh/install/zlib-1.2.7 --with-ssl-dir=/data/source/arm/openssh/install/openssl-1.0.1c --disable-etc-default-login CC=arm-linux-gnueabihf-gcc-4.6 AR=arm-linux-gnueabihf-ar --prefix=/data/source/arm/openssh/install/openssh-6.1p1

修改Makefile,将下行注释掉,不然会报错strip: Unable to recognise the format of the input file
#STRIP_OPT=-s

make && make install

4.将生成的二进制文件拷贝到sdcard上对应的目录
cp -r /data/source/arm/openssh/install/openssh-6.1p1/* /media/sdcard/
cp -r /data/source/arm/openssh/install/zlib-1.2.7/* /media/sdcard/
cp -r /data/source/arm/openssh/install/openssl-1.0.1c/* /media/sdcard/




以下在sdcard上操作
cd /media/sdcard/usr/sbin


1.ln -s ../../sbin/sshd sshd


2.修改/etc/rc.local,添加系统自启动运行生成key
/usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ""
/usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
/usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""

/usr/bin/ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""


3.将主机上的如下文件复制到sdcard上相应目录
cp /etc/init.d/ssh /media/sdcard/etc/
cp /etc/default/ssh /media/sdcard/etc/
cp /etc/init/ssh.conf /media/sdcard/etc/
cp /etc/network/if-up.d/openssh-server /media/sdcard/etc/


4.修改以上文件内容,将/usr/sbin替换成/sbin
5.添加ssh用户,分别编译如下文件
/media/sdcard/etc/passwd
sshd:x:113:65534::/var/run/sshd:/usr/sbin/nologin

/media/sdcard/etc/shadow
sshd:*:15659:0:99999:7:::

/media/sdcard/etc/group
ssh:x:112:



以上编译和安装完成

将sdcard插到cubieboard上,加电启动即可


qhdz 发表于 2012-12-22 15:13:29

多谢分享:loveliness:

matson 发表于 2012-12-30 00:41:11

膜拜一下,哈哈

Earthman 发表于 2013-3-9 15:31:36

安装时遇到问题咋办,下面是最后一部分的日志/linux-armhf/usr/etc/ssh_config already exists, install will not overwrite
/linux-armhf/usr/etc/sshd_config already exists, install will not overwrite
/linux-armhf/usr/etc/moduli already exists, install will not overwrite
/lib/ld-linux-armhf.so.3: No such file or directory
/lib/ld-linux-armhf.so.3: No such file or directory
/lib/ld-linux-armhf.so.3: No such file or directory
/lib/ld-linux-armhf.so.3: No such file or directory
make: *** 错误 255
我去查看过Makefile,后面似乎是产生key文件,看起来是不要紧的,不过仍然希望把这个问题解决了
另外,toolchain是直接下载linaro的gcc 4.7

AlexMgx 发表于 2013-5-31 15:51:12

在cb 上直接 sudo spt-get install openssh-server 不就行了吗,为什么还要交叉编译?

itfanr 发表于 2013-8-6 23:14:32

sudo spt-get install ssh

不过,楼主提供了一个很好的交叉编译方式

sunke_A7 发表于 2013-9-16 20:57:57

感觉楼主, 正在找如何构建交叉工具链的方法.

yuruyi 发表于 2013-9-29 23:07:23

sunke_A7 发表于 2013-9-16 20:57 static/image/common/back.gif
感觉楼主, 正在找如何构建交叉工具链的方法.

可以看看 clfs 的 arm 版本。

cb2是linux系统的话,建议cb2本地编译。
编译过程可能慢点,费点时间,但可以省去很多补丁工作。相对来说更省时间。
如果你交叉编译过一些特别的软件包,会明白的。

执意交叉编译,准备好工具链后,可以考虑下 scratchbox2,模拟本地编译,可以配合cb2使用的。

noudle614 发表于 2015-3-20 16:06:53

openssh时交叉编译出错:
checking OpenSSL header version... not found
configure: error: OpenSSL version header not found.

meteor01 发表于 2015-3-31 13:19:43

怎么收藏帖子??
页: [1] 2
查看完整版本: ubuntu交叉编译cubieboard arm可用的openssh-server