第11章 嵌入式Linux Qt應用開發(fā)_第1頁
第11章 嵌入式Linux Qt應用開發(fā)_第2頁
第11章 嵌入式Linux Qt應用開發(fā)_第3頁
第11章 嵌入式Linux Qt應用開發(fā)_第4頁
第11章 嵌入式Linux Qt應用開發(fā)_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

《嵌入式系統(tǒng)原理與開發(fā)教程》嵌入式LinuxQt應用開發(fā)主講人:賴樹明東莞理工學院01LinuxQt開發(fā)環(huán)境搭建03配置RK3399Qt版本編譯環(huán)境04課程作業(yè)任務02移植Qt到RK3399目標板01LinuxQt開發(fā)環(huán)境搭建Qt相關軟件下載安裝QtCreator安裝格式化插件LinuxQt開發(fā)環(huán)境搭建Qt相關軟件下載01下載地址

http://download.qt.io/archive/qt/打開下載網(wǎng)頁,點擊5.12進入5.12所有子版本下載頁面,我們選擇5.12.0版本,進入打點擊qt-opensource-linux-x64-5.12.0.run即可下載到。Linux歷史LinuxQt開發(fā)軟件下載復制到qt-opensource-linux-x64-5.12.0

Ubuntu系統(tǒng)中,打開命令終端,給它增加執(zhí)行權(quán)限:lai@lai-machine:~/work/source$chmod+xqt-opensource-linux-x64-5.12.0.run運行安裝程序:lai@lai-machine:~/work/source$./qt-opensource-linux-x64-5.12.0.run接下來會彈出安裝界面,根據(jù)提示完成安裝即可。Linux安裝QtCreatorLinuxQt開發(fā)環(huán)境搭建Qt相關軟件下載01下載地址

http://download.qt.io/archive/qt/打開下載網(wǎng)頁,點擊5.12進入5.12所有子版本下載頁面,我們選擇5.12.0版本,進入打點擊qt-opensource-linux-x64-5.12.0.run即可下載到。Linux歷史LinuxQt開發(fā)軟件下載復制到qt-opensource-linux-x64-5.12.0

Ubuntu系統(tǒng)中,打開命令終端,給它增加執(zhí)行權(quán)限:lai@lai-machine:~/work/source$chmod+xqt-opensource-linux-x64-5.12.0.run運行安裝程序:lai@lai-machine:~/work/source$./qt-opensource-linux-x64-5.12.0.run接下來會彈出安裝界面,根據(jù)提示完成安裝即可。Linux安裝QtCreatorLinuxQt開發(fā)環(huán)境搭建Qt相關軟件下載01下載地址

http://download.qt.io/archive/qt/打開下載網(wǎng)頁,點擊5.12進入5.12所有子版本下載頁面,我們選擇5.12.0版本,進入打點擊qt-opensource-linux-x64-5.12.0.run即可下載到。Linux歷史LinuxQt開發(fā)軟件下載復制到qt-opensource-linux-x64-5.12.0

Ubuntu系統(tǒng)中,打開命令終端,給它增加執(zhí)行權(quán)限:lai@lai-machine:~/work/source$chmod+xqt-opensource-linux-x64-5.12.0.run運行安裝程序:lai@lai-machine:~/work/source$./qt-opensource-linux-x64-5.12.0.run接下來會彈出安裝界面,根據(jù)提示完成安裝即可。Linux安裝QtCreatorLinuxQt開發(fā)環(huán)境搭建Qt相關軟件下載01Linux歷史Linux安裝QtCreator安裝過程比較簡單,這里只給出需要我們配置的界面,如右圖所示。LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01QtCreator編譯時依賴libgl庫,默認情況下,Ubuntu是沒有安裝的,需要用戶自己安裝,否則

后面編譯QT工程時會報錯:compilationterminated..........:fatalerror:GL/gl.h:Nosuchfileordirectory

解決方法是在命令行終端中在線安裝依賴庫:

sudoapt-getinstalllibgl1-mesa-dev-yLinux歷史libgl

庫安裝LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01在Ubuntu上安裝搜狗輸入法,啟用fcitx輸入系統(tǒng)后QtCreator無法輸入中文,原因是缺少fcitx的支持庫libfcitxplatforminputcontextplugin.so,解決方法如下,在命令行進行以下操作:

$dpkg-Lfcitx-frontend-qt5|grep.so

$cp/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so

如果沒有,則下載安裝相關庫,如下所示:

sudoapt-getinstallfcitx-frontend-qt5解決QtCreator軟件無法輸入中文問題LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01在Ubuntu上安裝搜狗輸入法,啟用fcitx輸入系統(tǒng)后QtCreator無法輸入中文,原因是缺少fcitx的支②將步驟①中所示路徑下的庫文件復制到Qt插件目錄下,如Qt的安裝目錄是/home/lai/Qt5.12.0,則輸入命令,如下所示:

$cd/home/lai/Qt5.12.0/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/

$

cp/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so./

修改libfcitxplatforminputcontextplugin.so文件權(quán)限,如下所示:

$chmod

+x

libfcitxplatforminputcontextplugin.so

重啟Ubuntu系統(tǒng),進入系統(tǒng)后重新運行QtCreator,就可以在QtCreator編輯器中正常輸入中文。解決QtCreator軟件無法輸入中文問題LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01QtCreator可安裝第三方的代碼格式化工具,使用第三方代碼格式工具可以讓代碼排版更規(guī)范、標準,本節(jié)介紹QtCreator中集成ArtisticStyle格式化工具來實現(xiàn)代碼的自動格式化排版。下載地址:/projects/astyle/files/astyle/astyle%203.1/

本書選擇下載astyle_3.1_linux.tar.gz,這個文件是Linux系統(tǒng)下使用程序源碼。安裝格式化插件Linux系統(tǒng)下載astyle_3.1_linux.tar.gz,復制到Linux用戶家目錄中,解壓astyle_3.1_linux.tar.gz,然后使用cd命令進入到解壓出來的ArtisticStyle源碼目錄的build/gcc目錄。編譯ArtisticStyle$cd~/astyle/build/gcc輸入make命令進行編譯:

輸入sudomakeinstall命令安裝

到軟件被安裝到/usr/bin目錄中了LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01QtCreator可安裝第三方的代碼格式化工具,使用第三方代碼格式工具可以讓代碼排版更規(guī)范、標準,本節(jié)介紹QtCreator中集成ArtisticStyle格式化工具來實現(xiàn)代碼的自動格式化排版。下載地址:/projects/astyle/files/astyle/astyle%203.1/

本書選擇下載astyle_3.1_linux.tar.gz,這個文件是Linux系統(tǒng)下使用程序源碼。安裝格式化插件Linux系統(tǒng)下載astyle_3.1_linux.tar.gz,復制到Linux用戶家目錄中,解壓astyle_3.1_linux.tar.gz,然后使用cd命令進入到解壓出來的ArtisticStyle源碼目錄的build/gcc目錄。編譯ArtisticStyle$cd~/astyle/build/gcc輸入make命令進行編譯:

輸入sudomakeinstall命令安裝

到軟件被安裝到/usr/bin目錄中了LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01使能Beautifier插件打開QtCreator,單擊幫助→關于插件→C++→勾選Beautifier(experimental)插件,關閉QtCreator并重啟,使能Beautifier插件界面,如圖所示。QtCreator中添加astyle格式化插件LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01設置代碼格式化打開工具→選項→Beautifier,具體的設置如圖所示。QtCreator中添加astyle格式化插件LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01Beautifier插件選項在Value中輸入以格式化參數(shù),后點擊OK,具體格式化參數(shù)放在后面PPT看。QtCreator中添加astyle格式化插件LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01Beautifier

格式參數(shù)#--style=attach#--style=allman--style=k&rindent-col1-comments#注釋和代碼縮進對齊。indent=spaces=4 #縮進采用4個空格indent-switches#-S設置switch整體縮進indent-cases #-K設置cases整體縮進indent-namespaces#-N設置namespace整體縮進indent-preproc-block#-xW設置預處理模塊縮進QtCreator中添加astyle格式化插件LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01Beautifier

格式參數(shù)indent-preproc-define#-w設置宏定義模塊縮進 pad-oper

#-p操作符前后填充空格delete-empty-lines

#-xe刪除多余空行add-braces

#-j單行語句加上大括號align-pointer=name#*、&這類字符靠近變量名字#align-pointer=type*、&這類字符靠近類型break-blocks

#語句塊(如if,for,while)前后增加空行。add-braces

#語句或者語句塊增加大括號。attach-closing-while

#使用do-while語句時,將while與結(jié)束括號放置同一行。QtCreator中添加astyle格式化插件LinuxQt開發(fā)環(huán)境搭建安裝完成其他插件01Beautifier插件選項單擊Add按鈕,進入如圖11.17所示界面。具體的設置如圖所示。QtCreator中添加astyle格式化插件02移植Qt到RK3399目標板制作精簡的根文件系統(tǒng)移植tslib到ARM開發(fā)板移植Qt5.12到ARM開發(fā)板移植Qt到RK3399目標板制作精簡的根文件系統(tǒng)02嵌入式Linux產(chǎn)品中,如果不需要安裝龐大的Ubuntu系統(tǒng),可以使用busybox制作一個精簡根文件系統(tǒng),然后打包為ext4格式文件系統(tǒng),下載到開發(fā)板替換原來出廠系統(tǒng)中的根文件系統(tǒng)這部分映像,u-boot和kernel映像不需要替換。使用這個精簡的根文件系統(tǒng),我們可以在上面移植Qt5,編寫圖形界面程序。概述根文件系統(tǒng)制作1.把本節(jié)配套資料的rootfs-busybox-snd-ok-rk3399.tar.bz2壓縮包和make-rootfs.sh復制到Ubuntu系統(tǒng)的工作目錄(請保持它們在同級目錄下),打開命令終端進入文件所在目錄解壓:

tarxfrootfs-busybox-snd-ok-rk3399.tar.bz2

。2.給打包腳本增加可執(zhí)行權(quán)限:

chmod+xmake-rootfs.sh3.打包文件系統(tǒng)生成映像文件:./make-rootfs.shrootfs

回車后要輸入Ubuntu密碼,因為腳本中使用到了sudo臨時提升權(quán)限。執(zhí)行后需要一定的時間,會生成linux-rootfs.img文件系統(tǒng)映像。移植Qt到RK3399目標板制作精簡的根文件系統(tǒng)02連接好開發(fā)板,并且使用Type-C線把開發(fā)板和電腦相連,打開AndroidTool固件更新工具,同時按下開發(fā)板的RESET按鍵和RECOVERY按鍵,然后先松開RESET按鍵,2s后松開RECOVERY按鍵,讓開發(fā)板進入Loader模式。如下所示:注意:啟動AndroidTool工具,默認選項可能沒有的rootfs選項,需要自己先在軟件上增加這欄,再單擊界面上的“讀取分區(qū)表”按鍵。下載根文件系統(tǒng)到開發(fā)板移植Qt到RK3399目標板制作精簡的根文件系統(tǒng)02讀取完分區(qū)表后,把rootfs欄目前面的復選框選上,并且該欄單擊右邊的空格加載上面做好的根文件系統(tǒng)文件,最后單擊“執(zhí)行”開始下載根文件系統(tǒng),如圖所示。下載根文件系統(tǒng)到開發(fā)板移植Qt到RK3399目標板制作精簡的根文件系統(tǒng)02下載好文件系統(tǒng)后,系統(tǒng)自動重啟,在開發(fā)板上串口終端上就可以輸入用戶名和密碼登錄開發(fā)板,使用命令和開發(fā)板進行交互了。使用busybox制作的精簡文件系統(tǒng),進入后,LCD屏是沒有圖形顯示的,圖形顯示需要我們寫應用程序,比如后面的移植Qt,然后編寫Qt程序,運行起來后就會顯示在開發(fā)板的LCD屏上。測試啟動系統(tǒng)輸入幾次回車……edu118login:root#輸入root用戶名登錄Password:#輸入root用戶密碼,配套的系統(tǒng)是123456login[233]:rootloginon'console'#密碼正確就可以登錄成功1.安裝autoconf工具:

sudoapt-getinstallautoconf2.復制tslib-1.20.tar.gz到linux系統(tǒng),然后打開命令終端

解壓源碼:

tar-xftslib-1.20.tar.bz23.配置

lai@lai-machine:tslib-1.20$./autogen.sh......lai@lai-arm-machine:tslib-1.20$./configure\--prefix=/opt/tslib\--host=aarch64-linux-gnu\--enable-static--enable-shared\CC=aarch64-linux-gnu-gcc\CPP="aarch64-linux-gnu-gcc-E"移植Qt到RK3399目標板移植tslib到ARM開發(fā)板024.編譯、安裝tslib交叉編譯器環(huán)境變量是在普通用戶的~/.bashrc文件中導出的,只在當前用戶環(huán)境下才有效,當使用sudo后就會找不到編譯器,因此我們可以給sudo設置一個別名,讓它可以攜帶當前用戶的環(huán)境變量,要注意的是,該命令只是當前命令終端臨時生效,如下:lai@lai-arm-machine:tslib-1.20$

aliassudo='sudoenvPATH=$PATH'lai@lai-arm-machine:tslib-1.20$aliassudo='sudoenvPATH=$PATH'執(zhí)行編譯和安裝命令:lai@lai-arm-machine:tslib-1.20$make-j8lai@lai-arm-machine:tslib-1.20$sudomakeinstall注意:由于在普通用戶下操作,安裝到/opt目錄,需要有root權(quán)限,因此執(zhí)行安裝命令時候前面需要添加sudo臨時提升權(quán)限。移植Qt到RK3399目標板移植tslib到ARM開發(fā)板025.修改tslib配置文件內(nèi)容把

/opt/tslib/etc/ts.conf內(nèi)容全部刪除,輸入內(nèi)空,如下所示:module_rawinputmodulepthrespmin=1modulevariancedelta=30moduledejitterdelta=100modulelinear以上內(nèi)容實際上只是把第2行#module_rawinput前面的#注釋取消。6.復制生成的tslib庫相關文件復制到開發(fā)板根文件系統(tǒng)中把整個編譯生成的/opt/tslib文件夾復制到根文件系統(tǒng)opt目錄中,本文~/work/nanopc-t4/rootfs是根文件系統(tǒng)路徑,請大家根據(jù)實際情況修改,如下所示:lai@lai-arm-machine:tslib-1.20$cp/opt/tslib~/work/nanopc-t4/rootfs/opt/-rf移植Qt到RK3399目標板移植tslib到ARM開發(fā)板027.接下來在虛擬機的Ubuntu系統(tǒng)中操作,在前面解壓出來的精簡根文件系統(tǒng)rootfs文件夾的opt/目錄中創(chuàng)建tslib-env.sh文件,如下(如Vim不熟悉,也可以使用gedit編輯器):$vim~/work/nanopc-t4/rootfs/opt/tslib-env.sh注意:~/work/nanopc-t4/rootfs/是你自己的根文件系統(tǒng)路徑,請根據(jù)實際情況修改。并添加以下內(nèi)容:移植Qt到RK3399目標板移植tslib到ARM開發(fā)板02#!/bin/sh#注意:event1是你系統(tǒng)中觸摸屏的設備名,根據(jù)實際情況修改exportTSLIB_TSDEVICE=/dev/input/event1#注意:/opt/tslib是前面移植好的tslib存放在開發(fā)板根文件系統(tǒng)的目標路徑exportTSLIB_ROOT=/opt/tslib#這個是存放校正參數(shù)的文件exportTSLIB_CALIBFILE=/etc/pointercal#存放配置信息文件,不需要修改exportTSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf#存放插件庫路徑,不需要修改exportTSLIB_PLUGINDIR=$TSLIB_ROOT/lib/tsexportTSLIB_CONSOLEDEVICE=none#LCD屏顯示設備名稱,根據(jù)實際情況修改,一般也是fb0exportTSLIB_FBDEVICE=/dev/fb0#導出搜索觸摸屏插件庫路徑到環(huán)境變量,不需要修改exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib#導出觸摸屏測試程序路徑到環(huán)境變量,不需要修改exportPATH=$PATH:$TSLIB_ROOT/bin移植Qt到RK3399目標板移植tslib到ARM開發(fā)板02保存退出后,給文件增加可執(zhí)行權(quán)限:$sudochmod+x~/work/nanopc-t4/rootfs/opt/tslib-env.sh說明:~/work/nanopc-t4/rootfs/是前面解壓出來的Busybox制作的精簡根文件系統(tǒng)路徑,讀者根據(jù)自己的實際情況修改。移植Qt到RK3399目標板移植tslib到ARM開發(fā)板028.編輯開發(fā)板根文件系統(tǒng)etc/profile文件,導入前面寫好的觸屏環(huán)境變量初始化腳本,如下操作:$vim~/work/nanopc-t4/rootfs/etc/profile添加內(nèi)容,如下所示:source/opt/tslib-env.sh9.打包文件系統(tǒng),下載到開發(fā)板上參考本章中前面打包文件系統(tǒng)的步方法,把添加了觸屏功能的根文件系統(tǒng)生成的映像文件下載到開發(fā)板上。下載完成,重新啟動開發(fā)板,在串口終端進行登錄操作10.觸摸屏校正登錄開發(fā)板成功后,運行觸摸屏校正程序。首先使用cd命令進入/opt/tslib/bin/目錄,在命令終端中輸入./ts_calibrate,LCD屏上會出現(xiàn)十字坐標,依次單擊觸摸屏上出現(xiàn)的十字坐標中心,單擊5個點后完成觸摸屏校驗,校正完成后會在根文件系統(tǒng)的etc目錄下生成一個名為pointercal的校正文件。[root@lai-arm-machine~]#./ts_calibrateaad.c:intadd(inta,intb){intc;c=a+b;returnc;}編寫功能函數(shù)sub.c:intsub(inta,intb){intc;c=a-b;returnc;}aad.h:#ifndef__ADD_H__#define__ADD_H__intadd(inta,intb);#endifsub.h:#ifndef__SUB_H__#define__SUB_H__intsub(inta,intb);#endifgcc-cadd.c-oadd.ogcc-csub.c-osub.o編譯函數(shù)為.o文件ar-crsvlibfunction.aadd.osub.o把.o文件封裝成.a執(zhí)行上面命令后會生成libfunction.a靜態(tài)庫文件,后面就可以供第三方程序使用。移植Qt到RK3399目標板移植Qt5.12到ARM開發(fā)板02main.c:#include<stdio.h>#include"add.h"http://引入函數(shù)聲明#include"sub.h"http://引入函數(shù)聲明intmain(void){printf("2+1=%d;\r\n2-1=%d\r\n",add(2,1),sub(2,1));return0;}測試代碼編寫工程文件存放結(jié)構(gòu)├──include│├──add.h│└──sub.h└──src├──add.c├──libfunction.a├──main.c└──sub.c說明:編譯為.a文件后,可以把add.c、sub.c刪除,我們只需要.a文件即可。編譯:gcc-omainmain.clibfunction.a-I../include/

--->這種是把庫當成源文件一樣使用或者:gcc-omainmain.c-I../include-L./-lfunction--->這種是標準的使用方法編譯生成main可執(zhí)行程序后可以刪除.a文件,不會影響到后面可執(zhí)行程序的運行,因為它已復制一份代碼到其中。運行:./main移植Qt到RK3399目標板動態(tài)庫與靜態(tài)庫的比較0203配置RK3399Qt版本編譯環(huán)境RK3399Qt套件配置RK3399Qt配置測試編譯Qt程序①添加ARM版本編譯器依次打開軟件的工具->選項->kits->編譯器,如圖11.20所示。單擊圖11.20③的添加→GCC→C,會彈出對話框,如圖11.21所示。配置RK3399Qt版本編譯環(huán)境03配置QtCreator軟件RK3399Qt套件配置①添加ARM版本編譯器依次打開軟件的工具->選項->kits->編譯器,如圖11.20所示。單擊圖11.20③的添加→GCC→C,會彈出對話框,如圖11.21所示。配置RK3399Qt版本編譯環(huán)境03配置QtCreator軟件RK3399Qt套件配置配置RK3399Qt版本編譯環(huán)境03配置QtCreator軟件RK3399Qt套件配置配置RK3399Qt版本編譯環(huán)境03配置QtCreator軟件RK3399Qt套件配置配置RK3399Qt版本編譯環(huán)境03配置QtCreator軟件RK3399Qt套件配置上圖中編譯器的名稱可以自己定義,編譯器的路徑是arm64gcc的編譯器路徑,如果你不清楚arm64gcc編譯器的路徑是什么,可以通過命令終端查找,如下所示:lai@lai-machine:~$whichaarch64-linux-gnu-gcc/usr/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc然后單擊apply按鈕即可,配置RK3399Qt版本編譯環(huán)境03配置QtCreator軟件RK3399Qt套件配置

使用同樣的方法添加ARM版本的g++編譯器,然后按照上圖的順序依次單擊,完成ARM版本編譯器添加。配置RK3399Qt版本編譯環(huán)境03配置QtCreator軟件RK3399Qt套件配置添加ARM版本Qt:依次單擊工具→選項→kits→QtVersions→添加,根據(jù)提示選擇ARM版本QtSDKqmake,如圖所示。配置RK3399Qt版本編譯環(huán)境03配置QtCreator軟件RK3399Qt套件配置添加Qt編譯套件:單擊構(gòu)建套件→手動設置→添加,然后填寫文本框中的內(nèi)容,其中名稱自定義,編譯器填寫前面添加的編譯器,Qt版本選擇前面添加的QtSDK版本,按照順序操作即可,,如圖所示。1.先新建一個Qt工程或打開一個Qt示例工程配置RK3399Qt版本編譯環(huán)境03交叉編譯Qt程序新建Qt工程菜單1.先新建一個Qt工程或打開一個Qt示例工程配置RK3399Qt版本編譯環(huán)境03交叉編譯Qt程序新建Qt工程菜單配置RK3399Qt版本編譯環(huán)境03交叉編譯Qt程序設置Qt項目名稱及保存位置選擇桌面版和ARM版本的套件,到時可以切換ARM版本Qt版本和桌面版Qt版本編譯套件,選擇工程開發(fā)套件如圖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論