7.2 QtE5.7 編譯 本小節主要包括以下內容: 1 在 Ubuntu16.04 系統下搭建編譯環境; 2 在 Ubuntu16.04 系統下實現 uboot 和內核源碼編譯; 3 在 Ubuntu16.04 系統下實現 QtE5.7 的編譯; 4 在 Ubuntu16.04 系統下實現 QtE5.7 鏡像的打包編譯。 迅為開發板可以支持 QtE5.7 系統,將 uboot 和內核在同一 Ubuntu 環境下編譯,有 助于提高開發效率。請注意,在 Ubuntu16.04 下是無法編譯 Android 系統的,必須要使用 Android 編譯章節對應的 Ubuntu 系統。 7.2.1 QtE5.7 編譯環境的兩種搭建方式 7.2.1.1 使用已經搭建好的鏡像 搭建好的編譯環境在網盤“iTOP-iMX6 開發板資料匯總(不含光盤資料)\02_iTOP- iMX6 開發板編譯系統所需要的工具包等\06_QtE5.7 的編譯環境安裝包”目錄下。用戶如果使用搭建好的編譯環境,在簡單的修改環境變量之后,就可以完成本章的編譯。 用戶在使用搭建好的環境時,如果 ssh 連接失敗的話,可以參考“7.2.1.2”小節,配置ssh 服務。如果參考參考“7.2.1.2”小節修改配置之后還有問題,可以參考 7.2.1.3 和 7.2.1.4小節,使用的替換工具。經過測試,在 ssh 工具無法使用的時候,這兩個工具仍然可以使用。 7.2.1.2 自己搭建環境 另一種方法是自己安裝虛擬機,安裝 Ubuntu16.04 系統,搭建環境。 有關“虛擬機安裝”、“虛擬機加載 ubuntu 鏡像”、“Ubuntu 基本操作”等內容,用戶可以參考第三章的內容,這些基本操作在 ubutu16 上都是通用的。有一點需要特殊提出的是,使用 ubuntu16 時,使用的站點是清華的源,具體的設置過程如下: 右上角小齒輪→System Settings→System→Software & updates →Ubuntu Software→Download from 選擇站點 →選擇清華站點 →彈出驗證→輸入 root 賬號密碼 →替換為清華的下載點 →apt-get update 更新 使用命令“apt-get install vim ssh”安裝 vim 編輯器以及 ssh 工具。 使用 ssh 的時候,會遇到 ssh 連接失敗的問題。 先使用命令“/etc/init.d/ssh restart”啟動 ssh 服務,然后使用命令“vim /etc/ssh/sshd_config”打開配置文件。在配置文件最后位置添加: Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96 KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519- sha256@libssh.org 如下圖所示: ![]() 在配置文件中找到下面這段代碼,修改如下。 # Authentication: LoginGraceTime 120 #PermitRootLogin prohibit-password PermitRootLogin yes StrictModes yes ![]() 之后使用“/etc/init.d/ssh restart”命令重啟 ssh 服務,ssh 就可以連接上了。 依次使用如下命令,進行庫文件的安裝。 apt-get install lzop apt-get install u-boot-tools apt-get install autoconf apt-get install automake apt-get install libtool apt-get install libstdc++6 apt-get install lib32c-dev apt-get install lib32stdc++6 apt-get install lib32z1 apt-get install lib32ncurses5 7.2.1.3 putty 工具的使用 用戶手冊 3.3.5 小節介紹 SSH 工具,在 Ubuntu16.04 上有一定的概率使用不了,本節介紹替換 SSH 控制臺的工具 putty。 putty 工具是網盤“iTOP-iMX6 開發板資料匯總(不含光盤資料)\02_iTOP-iMX6 開發板編譯系統所需要的工具包等\06_QtE5.7 的編譯環境安裝包\03-QtE5.7 編譯環境需要的工具\01-putty 控制臺工具”目錄下的壓縮包“putty_cn.zip”,解壓之后得到文件夾“puttyfile_0.62cn”,進入該文件夾,如下圖所示。 ![]() 確認 Ubuntu16.04 上已經安裝了 SSH 并開啟 SSH 功能,虛擬機已經開啟。作者虛擬機上的 IP 是:192.168.2.23,用戶要根據自身的實際情況修改。如下圖所示,雙“putty.exe”打開 Putty 配置,如下圖所示。 ![]() 如上圖所示,需要注意的部分已經標注。 第一步“遠程主機 IP”要根據實際情況設置;第 2-4 步驟,使用默認即可;第 5 步在保存登陸設置之后,如果配置沒有變化,可以使用默認配置登陸;配置完成之后使用第 6 步,登陸主機。 作者配置如下圖所示。 ![]() 點擊打開,彈出如下圖所示對話框。 有三種選項目,第一個選項“是”,表示登陸主機并且保存配置到緩存;第二個選項“否”,表示登陸主機,但是不保存配置;第三個選項“取消”,表示不登錄,不保存。選擇第一個選項,第二次登陸就不會彈出這個下圖所示的對話框。 ![]() 這里選擇“是”,只剩下 PuTTY 使用界面,如下圖所示。輸入賬號 root 和密碼 topeet,搭建好的 Ubuntu 系統默認密碼是“topeet”。 ![]() 輸入賬號和密碼之后,如下圖所示,已經可以遠程控制 Ubuntu16.04 系統了。 ![]() 7.2.1.4 winscp 工具的使用 用戶手冊 3.3.5 小節介紹 SSH 工具,在 Ubuntu16.04 上有一定的概率使用不了,本節介紹替換 SSH 文件傳輸的工具 winscp。 winscp 工具是網盤“iTOP-iMX6 開發板資料匯總(不含光盤資料)\02_iTOP-iMX6 開發板編譯系統所需要的工具包等\06_QtE5.7 的編譯環境安裝包\03-QtE5.7 編譯環境需要的工具\02-WinSCP 文件傳輸工具”目錄下的壓縮包“winscp5131.zip”,解壓之后得到文件夾“WinSCP(SFTP 客戶端) v5.13.1 中文版”,進入該文件夾,如下圖所示。 ![]() 雙擊“WinSCP.exe”,如下圖所示。彈出登陸框。 ![]() 如下圖所示,主機名稱為 Ubuntu 的 IP 地址,用戶名直接登陸 root,搭建好的編譯環境密碼為 topeet,然后點擊按鈕“登陸”。 ![]() 彈出如下圖所示提示框。有三種選項目,第一個選項“是”,表示登陸主機并且保存配置到緩存;第二個選項“否”,表示登陸主機,但是不保存配置;第三個選項“取消”,表示不登錄,不保存。選擇第一個選項,第二次登陸就不會彈出這個下圖所示的對話框。 ![]() 作者這里選擇“是”,如下圖所示,已經登陸,左邊是 Windows 目錄,右邊是 Ubuntu的目錄,使用方法比較簡單,傳文件直接向對應目錄拖動即可。 ![]() 7.2.2 Ubuntu16.04 系統編譯 uboot 和 kernel 通過 Ubuntu16.04 編譯 uboot 和 kernel 鏡像,和使用第五章編譯出來的鏡像是一摸一樣的。由于 QtE5.7 必須在 Ubuntu16.04 上編譯,為了方便只使用 QtE5.7 的用戶,所以在這一小節中,提供在 Ubuntu16.04 上編譯 QtE5.7 對應的 uboot 和 kernel 鏡像的方法。 uboot 源碼和內核源碼均在 Android 源碼中。 Android 源碼在光盤目錄“04_源碼_Android4.4 文件系統”下,壓縮包先在 windows下解壓,解壓之后的到單獨的壓縮包“iTOP-iMX6_android4.4.2_20160904.tar.gz”。將“iTOP-iMX6_android4.4.2_20160904.tar.gz”壓縮包解壓到 Ubuntu 下(注意,日期后綴可能會更新),得到“iTOP-iMX6_android4.4.2”文件夾,進入“iTOP-iMX6_android4.4.2”目錄,如下圖所示。 ![]() 7.2.2.1 編譯器版本 編譯的時候需要用到交叉編譯工具。具體設置過程,可以參考“5.2.2 交叉編譯工具的安裝”小節。 7.2.2.2 編譯 uboot 進入源碼解壓得到的“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx”目錄,如下圖所示,可以看到腳本“build_uboot.sh”,執行腳本“build_uboot.sh”開始編譯 uboot。如下圖所示。 ![]() 編譯完成后,生成了“u-boot.bin”文件,就是 uboot 的鏡像。iTOP-iMX6 開發板所有的系統通用一套 uboot 源碼和鏡像。如下圖所示。 ![]() 7.2.2.3 編譯內核 進入源碼解壓得到“iTOP-iMX6_android4.4.2/kernel_imx”目錄,使用“vikernel/timeconst.pl”命令打開該文件,進入到 373 行,并修改為如下圖所示。 ![]() 保存,退出。 使用“./build_qt_kernel.sh”命令,開始編譯內核,如下圖所示。 ![]() 編譯完成后,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/arm/boot”目錄下生成uImage,即是內核鏡像。如下圖所示。 ![]() ![]() |