要想實現一鍵燒寫,那么我們必須就先要在開發板上移植一個 ssh,本次實驗我們使用的是 busybox 文件系統,這個文件系統并不支持 ssh,所以我們要先移植一個上去。接下來,我們一起來移植一下。 移植環境: 編譯器保持和編譯文件系統和 QT 的編譯器一致: arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 Ubuntu 版本:Ubuntu16 (1)移植 zlib 從迅為提供的資料中拷貝“ zlib-1.2.3.tar.gz” 到 Ubuntu 系統,使用命令“ tar -vxf zlib-1.2.3.tar.gz” 解壓,得到“zlib-1.2.3” 文件夾,使用命令“cd zlib-1.2.3” 進入“ zlib-1.2.3”文件夾,如圖 62.6.1.1 ![]() 接著使用命令“./configure --prefix=/home/ssh/ssh_install/zlib-1.2.3”,設置配置文件, 其中--prefix=/home/ssh/ssh_install/zlib-1.2.3 指定了 zlib 的安裝路徑。如圖 ![]() 使用命令“ vim Makefile” 修改編譯參數,將所有 gcc 修改為“ arm-none-linux-gnueabi-gcc” 。如圖 ![]() 接著使用編譯命令“make” ,如圖 ![]() 執行 make 無報錯后,接著使用安裝命令“make install” ,如圖 ![]() 現在已經安裝好了 zlib 庫,在后面編譯 SSH 的時候,需要用到 zlib 庫,作者這里的路徑是“/home/ssh/ssh_install/zlib-1.2.3” ,后面配置的時候需要對應生成的庫文件,如圖 ![]() (2)移植 openssl 接著來移植 openssl 庫,拷貝“openssl-0.9.8h.tar.gz” 到 Ubuntu 系統,使用命令“tar -vxfopenssl-0.9.8h.tar.gz”解壓,得到“openssl-0.9.8h”文件夾,使用命令“cd openssl-0.9.8h”進入“openssl-0.9.8h”文件夾,如圖 ![]() 接著使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux-gnueabi-gcc' --prefix=/home/ssh/ssh_install/openssl-0.9.8h” 配置編譯文件,如圖 ![]() 使用編譯命令“make” 編譯完成,如圖 ![]() 最后使用安裝命令“make install” ,如果在安裝過程提示以下錯誤,如圖 ![]() 執行命令 rm -f /usr/bin/pod2man 可以解決,如圖 ![]() 然后再次執行 make install 即可安裝成功,如圖 ![]() (3)移植 ssh 接著來移植 openssh, 拷貝“ openssh-4.6p1.tar.gz” 到 Ubuntu 系統,使用命令“ tar-vxfopenssh-4.6p1.tar.gz” 解壓,得到“openssh-4.6p1” 文件夾,使用命令“cd openssh-4.6p1/” 進入“openssh-4.6p1” 文件夾,如圖 ![]() 這里看一下 ssh 的 configure 的幫助文件,如下圖所示,使用“ ./configure --help ssh 的 configure 文件中需要配置的參數 --host 表示編譯出來要運行的平臺 --with-libs 表示需要的額外的庫文件; --with-zlib 表示庫文件 zlib 的 instal 路徑 l; --with-ssl-dir 表示 OpenSSl 文件的 install 路徑; --disable-etc-default-login 表示不使用當前環境變量的編譯器, 所以后面配置參數時, 最后直接配置 CC 和 AR 這兩個編譯器; CC 表示設置使用的編譯器; AR 表示設置使用的編譯器的路徑(蠻奇怪, 配置文件中似乎沒有這個參數, 用戶可以執 行驗證下) 接著使用配置命令,命令比較長,作者使用顏色給大家分段: ./configure --host=arm-none-linux --with-libs --with-zlib=/home/ssh/ssh_install/zlib-1.2.3 --with-ssl-dir=/home/ssh/ssh_install/openssl-0.9.8h --disable-etc-default-login CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc AR=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-ar 如圖 ![]() 執行成功如圖 ![]() 使用編譯命令“make” ,編譯完成,如圖 ![]() 編譯完成,最后肯定是需要安裝到開發板上的,如圖 62.6.1.17 所示。最后在目錄下“/home/ssh/openssh-4.6p1” 有這幾個二進制文件“scp 、 sftp 、 ssh、 sshd、ssh-add、 ssh-agent、 ssh-keygen、 ssh-keyscan” 需要安裝到開發板上。最終編譯出來的二進制文件,可以使用 file 命令查看文件屬性,如下圖所示, 使用命令“file scp” ,可以看到“scp” 文件是 32 位 ARM上使用的可執行文件 ![]() |