之前我們寫好一個(gè)程序,都是先交叉編譯完,然后在通過 nfs/tftp 或者其他的方法拷貝到開發(fā)板,然后在手動(dòng)執(zhí)行,如果我們調(diào)試程序很頻繁,那我們每次都重新拷貝到開發(fā)板,那這樣就太麻煩了,有沒有方便一點(diǎn)的辦法呢,這個(gè)就是接下來我們要介紹的一種方法,一鍵燒寫 QT 程序到開發(fā)板,我們只需要在qtcreater 上點(diǎn)擊一下編譯,那么 QT 程序會(huì)自動(dòng)到開發(fā)板上來運(yùn)行,是不是非常的方便? 85.1 在開發(fā)板上移植 ssh 要想實(shí)現(xiàn)一鍵燒寫,那么我們必須就先要在開發(fā)板上移植一個(gè) ssh,本次實(shí)驗(yàn)我們使用的是 busybox 文件系統(tǒng),這個(gè)文件系統(tǒng)并不支持 ssh,所以我們要先移植一個(gè)上去。接下來,我們一起來移植一下。 移植環(huán)境: 編譯器保持和編譯文件系統(tǒng)和 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 系統(tǒng),使用命令“ tar -vxf zlib-1.2.3.tar.gz” 解壓,得到“zlib-1.2.3” 文件夾,使用命令“cd zlib-1.2.3” 進(jìn)入“ zlib-1.2.3”文件夾,如圖 62.6.1.1 ![]() 接著使用命令“./configure --prefix=/home/ssh/ssh_install/zlib-1.2.3”,設(shè)置配置文件, 其中--prefix=/home/ssh/ssh_install/zlib-1.2.3 指定了 zlib 的安裝路徑。 如圖 62.6.1.2 所示 : ![]() 使用命令“ vim Makefile” 修改編譯參數(shù),將所有 gcc 修改為“ arm-none-linux-gnueabi-gcc”如圖 62.6.1.3 所示 ![]() 接著使用編譯命令“make” ,如圖 62.6.1.4 所示 ![]() 執(zhí)行 make 無報(bào)錯(cuò)后,接著使用安裝命令“make install” ,如圖 62.6.1.5 所示 ![]() 現(xiàn)在已經(jīng)安裝好了 zlib 庫,在后面編譯 SSH 的時(shí)候,需要用到 zlib 庫,作者這里的路徑是“/home/ssh/ssh_install/zlib-1.2.3” ,后面配置的時(shí)候需要對(duì)應(yīng)生成的庫文件,如圖 62.6.1.6 所示 ![]() (2)移植 openssl 接著來移植 openssl 庫,拷貝“openssl-0.9.8h.tar.gz” 到 Ubuntu 系統(tǒng),使用命令“tar -vxfopenssl-0.9.8h.tar.gz”解壓,得到“openssl-0.9.8h”文件夾,使用命令“cd openssl-0.9.8h”進(jìn)入“openssl-0.9.8h”文件夾,如圖 62.6.1.7 所示。 ![]() 接著使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux -gnueabi-gcc' --prefix=/home/ssh/ssh_install/openssl-0.9.8h” 配置編譯文件,如圖 62.6.1.8 所示。 ![]() 使用編譯命令“make” 編譯完成,如圖 62.6.1.9 所示 ![]() 最后使用安裝命令“make install” ,如果在安裝過程提示以下錯(cuò)誤,如圖 62.6.1.10 所示: ![]() 執(zhí)行命令 rm -f /usr/bin/pod2man 可以解決,如圖 62.6.1.11 所示: ![]() 然后再次執(zhí)行 make install 即可安裝成功,如圖 62.6.1.12 所示: ![]() (3)移植 ssh 接著來移植 openssh, 拷貝“ openssh-4.6p1.tar.gz” 到 Ubuntu 系統(tǒng),使用命令“ tar -vxfopenssh-4.6p1.tar.gz” 解壓,得到“openssh-4.6p1” 文件夾,使用命令“cd openssh-4.6p1/” 進(jìn)入“openssh-4.6p1” 文件夾,如圖 62.6.1.13 所示 ![]() 這里看一下 ssh 的 configure 的幫助文件,如下圖所示,使用“ ./configure --help ssh 的 configure 文件中需要配置的參數(shù) --host 表示編譯出來要運(yùn)行的平臺(tái) --with-libs 表示需要的額外的庫文件; --with-zlib 表示庫文件 zlib 的 instal 路徑 l; --with-ssl-dir 表示 OpenSSl 文件的 install 路徑; --disable-etc-default-login 表示不使用當(dāng)前環(huán)境變量的編譯器, 所以后面配置參數(shù)時(shí), 最后直接配置 CC 和 AR 這兩個(gè)編譯器; CC 表示設(shè)置使用的編譯器; AR 表示設(shè)置使用的編譯器的路徑(蠻奇怪, 配置文件中似乎沒有這個(gè)參數(shù), 用戶可以執(zhí) 行驗(yàn)證下) 接著使用配置命令,命令比較長,作者使用顏色給大家分段: ./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 如圖 62.6.1.14 所示: ![]() 執(zhí)行成功如圖 62.6.1.15 所示: ![]() 使用編譯命令“make” ,編譯完成,如圖 62.6.1.16 所示 ![]() 編譯完成,最后肯定是需要安裝到開發(fā)板上的,如圖 62.6.1.17 所示。最后在目錄下“/home/ssh/openssh-4.6p1” 有這幾個(gè)二進(jìn)制文件“scp 、 sftp 、 ssh、 sshd、ssh-add、 ssh-agent、 ssh-keygen、 ssh-keyscan” 需要安裝到開發(fā)板上。最終編譯出來的二進(jìn)制文件,可以使用 file 命令查看文件屬性,如下圖所示, 使用命令“file scp” ,可以看到“scp” 文件是 32 位 ARM上使用的可執(zhí)行文件 ![]() |