樹莓派系統的精簡與打包qt程式
阿新 • • 發佈:2018-12-29
1.樹莓派系統精簡的整個過程:
筆者這裡只演示如何在linux下打包免安裝程式,程式名稱為giptables,
0、找個地方,比如桌面,建立空資料夾Giptables,這個將用來存放giptables程式的執行檔案
1、先將工程使用Release模式編譯
2、開啟編譯輸出檔案的資料夾(帶二進位制檔案giptables的那個)
筆者的資料夾名稱是build-giptables-Desktop_Qt_5_7_1_GCC_64bit-Release
3、在上一步的資料夾中新建檔案copylib.sh,通過指令設定許可權chmod 777 copylib.sh
4、在 copylib.sh 中加入內容
#!/bin/bash
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
do
cp "$Variable" $LibDir
done
5、開啟終端並進入到當前資料夾,輸入./copylib.sh giptables
其中, giptables 是執行copylib.sh 指令碼的引數,指令碼實際上是呼叫了 ldd giptables指令獲得giptables執行時需要哪些庫,並將庫都複製放到當前目錄的lib資料夾中。
執行完上述指令後,同目錄下會生成lib資料夾,這裡我們將其稱作giptables的庫資料夾,避免與下文內容混淆
6、將giptables的二進位制檔案和 giptables的庫資料夾裡所有的檔案複製到Giptables資料夾中,注意:這裡是把lib裡的所有檔案複製出來,不用複製lib資料夾
7、進入QT的安裝目錄,找到platforms資料夾,筆者的路徑是
~/Qt5.7.1/5.7/gcc_64/plugins/platforms
將整個platforms資料夾複製到Giptables資料夾中,注意:這時複製的是整個資料夾,這使得Giptables資料夾中會多出一個platforms資料夾
8、將上文的copylib.sh放到Giptables/platforms/中,並執行./copylib.sh libqxcb.so,這時會得到lib資料夾——libqxcb.so的庫資料夾
9、將libqxcb.so的庫資料夾中的所有檔案複製Giptables資料夾中,然後刪除掉Giptables/platforms/lib資料夾
10、在Giptables資料夾中新建指令碼giptables.sh,執行chmod 777 giptables.sh,並在其中加入
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "[email protected]"
到這裡就基本完成了,將Giptables資料夾複製到需要執行程式的目標主機即可,在目標主機中,執行程式,都採用 ./giptables.sh而不是./giptables,即執行程式的sh指令碼,而不是二進位制檔案
步驟:執行release編譯得到IOT可執行檔案
新建一個連結依賴庫的copylib.sh檔案
執行./copylib.sh IOT生成IOT的庫檔案
找到platforms拷貝到目錄下,執行./copylib.sh libqxcb.sh 生成另外一個庫檔案
新建一個IOT.sh檔案
將所有的庫檔案放在同一目錄下。打包到另外一臺裝置 執行IOT.sh檔案
(2)
另外一塊樹莓派的開發板,寫入系統程式,配置解析度
sd卡插上樹莓派。
把打包程式的整個資料夾ftp放進去, 對樹莓派進行其他的相關配置
(3)解除安裝不必要的程式:
解除安裝之前的記憶體佔用情況:
(4)製作映象檔案:
進入root賬戶,fdisk -l 檢視分割槽
1、掛載SD卡 使用以下命令進行掛載: $ cd /media $ sudo mkdir sdc1 sdc2 $ sudo mount /dev/sdc1 /media/sdc1 $ sudo mount /dev/sdc2 /media/sdc2 掛載完成後如下圖中所示。 2、備份SD卡 使用 dd 命令可以直接備份SD卡。這裡樹莓派的SD卡的路徑是 /dev/sdc1 和 /dev/sdc2 ,所以備份整個SD卡的路徑就是 /dev/sdc。 輸入備份命令: $ sudo dd if=/dev/sdc | gzip>/home/lixinxing/raspberry.gz 其中備份檔案要儲存的位置、檔名和 SD卡的路徑要根據實際選擇。 這個命令可以在備份的同時壓縮映象大小,壓縮完成後映象有6.7G. 映象大小 注:刪除的軟體: bluej ,geany , greenfoot , minecraft-pi , Idle ,scratch , sonic-pi , chromium-browser , clawsmail ,libreoffice-base ,libreoffice-calc , libreoffice-impress , ,libreoffice-writer , pimixer , python3 , python , nodejs , archiver , gpiciview , wolfram-engine
一定不要刪除的軟體: lxsession ,startx相關軟體(用於啟動桌面的軟體),dh-python, java-common,python2.7 python3.5(安裝lxsession 會自動安裝的包,也不能解除安裝) 上述軟體解除安裝的時候會解除安裝相關包,如果出現vnc連線樹莓派的時候出現一直顯示登陸頁面,請安裝lxsession即可 2.啟動過程的配置 檔案位置 /boot/cmdline.txt 執行命令 sudo nano /boot/cmdline.txt 檔案最後面增加一小節 logo.nologo 此種方法是在樹莓派正常啟動並進入圖形介面後開啟自定義的圖形介面程式【亦應適用於非圖形介面程式】,具體如下: 1.進入/home/pi/.config資料夾: $cd /home/pi/.config 2.在.config資料夾中建立autostart資料夾: $mkdir autostart 3.在autostart資料夾中建立my.desktop檔案: 檔案內容如下: #file start [Desktop Entry] Type=Application Exec=#你要啟動的圖形介面程式的絕對路徑# #file end 4.reboot看下有沒有效果吧。
進入root賬戶,fdisk -l 檢視分割槽
1、掛載SD卡 使用以下命令進行掛載: $ cd /media $ sudo mkdir sdc1 sdc2 $ sudo mount /dev/sdc1 /media/sdc1 $ sudo mount /dev/sdc2 /media/sdc2 掛載完成後如下圖中所示。 2、備份SD卡 使用 dd 命令可以直接備份SD卡。這裡樹莓派的SD卡的路徑是 /dev/sdc1 和 /dev/sdc2 ,所以備份整個SD卡的路徑就是 /dev/sdc。 輸入備份命令: $ sudo dd if=/dev/sdc | gzip>/home/lixinxing/raspberry.gz 其中備份檔案要儲存的位置、檔名和 SD卡的路徑要根據實際選擇。 這個命令可以在備份的同時壓縮映象大小,壓縮完成後映象有6.7G. 映象大小 注:刪除的軟體: bluej ,geany , greenfoot , minecraft-pi , Idle ,scratch , sonic-pi , chromium-browser , clawsmail ,libreoffice-base ,libreoffice-calc , libreoffice-impress , ,libreoffice-writer , pimixer , python3 , python , nodejs , archiver , gpiciview , wolfram-engine
一定不要刪除的軟體: lxsession ,startx相關軟體(用於啟動桌面的軟體),dh-python, java-common,python2.7 python3.5(安裝lxsession 會自動安裝的包,也不能解除安裝) 上述軟體解除安裝的時候會解除安裝相關包,如果出現vnc連線樹莓派的時候出現一直顯示登陸頁面,請安裝lxsession即可 2.啟動過程的配置 檔案位置 /boot/cmdline.txt 執行命令 sudo nano /boot/cmdline.txt 檔案最後面增加一小節 logo.nologo 此種方法是在樹莓派正常啟動並進入圖形介面後開啟自定義的圖形介面程式【亦應適用於非圖形介面程式】,具體如下: 1.進入/home/pi/.config資料夾: $cd /home/pi/.config 2.在.config資料夾中建立autostart資料夾: $mkdir autostart 3.在autostart資料夾中建立my.desktop檔案: 檔案內容如下: #file start [Desktop Entry] Type=Application Exec=#你要啟動的圖形介面程式的絕對路徑# #file end 4.reboot看下有沒有效果吧。