apt編譯環境
Linux開發筆記1-20220917
解壓完成後,查看文件列表。
安裝依賴軟體包:
使用以下命令安裝SDK編譯環境所需軟體包:
sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool
sudo apt-get install expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support
sudo apt-get install qemu-user-static live-build bison flex fakeroot cmake gcc-multilib
sudo apt-get install g++-multilib unzip
sudo apt-get install device-tree-compiler python-pip libncurses5-dev pyelftools
apt-get install device-tree-compiler
安裝命令執行後,即可編譯SDK。
編譯過程耗時較長,可做其他事情。
固件打包工具:mkfirmware.sh
查看img文件實際存放位置:
在recdev目錄下執行「ls -al」命令查看。
Ubuntu虛擬機下看不到U盤解決:
若U盤不支持exfat格式,安裝「sudo apt-get install exfat-utils」。
若U盤每次插入都被PC識別,可在VMware虛擬機的vmx文件中修改以下內容:
將「usb.restrictions.defaultAllow = "FALSE"」改為「usb.restrictions.defaultAllow = "TRUE"」。
保存並關閉虛擬機,重新打開後U盤符號變為正常。
進入虛擬機後查看U盤。
學習Linux,實踐最重要。我之前未接觸過Linux,現在主要做硬體設計。我覺得應拓寬知識邊界,多一份技能總無害。
研究表明,專注學習和實踐6個月,可達到優秀水平。讓我們行動起來,讓時間見證。
分享的Linux開發筆記,記錄了實際項目中遇到的問題,旨在幫助同樣探索Linux開發的朋友們。
分享知識是一種美德,請幫忙點贊轉發,惠及更多需要的朋友。
Ⅱ Android開發APT技術,與使用案例
annotationProcessor,全稱為 APT,即 Annotation Processor Tool,這一工具在 Java 編譯過程中,負責掃描和處理註解,獲取註解信息與被註解對象的相關數據,進而自動生成 Java 代碼。APT 在編譯時介入,對源代碼進行處理,提高代碼執行性能,避免重復的代碼編寫。
ButterKnife、EventBus、ARouter、GreenDAO 等 Android 開發框架均使用了 APT 技術。在 ARouter 框架中,路由表的生成過程利用了 APT 技術,這一表在運行時生成,用於填充 WareHouse 路由元信息。
APT 的主要作用是在編譯階段,即在 Java 源代碼轉換為 class 文件,並最終生成 dex 文件打入 APK 包中時,處理註解。APT 的作用分為兩部分:第一,它在編譯開始時介入,處理編譯時註解;第二,AOP(Aspect Oridnted Programming)則在編譯完成後、生成 dex 文件之前,通過修改 .class 文件,實現代碼的修改或添加邏輯,常用於代碼監控、修改與分析等場景。
APT 的使用能實現如下效果:減少重復代碼編寫,通過註解自動完成,如 Butterknife 可以直接通過註解表示 view ID,無需重復的手動編寫代碼;獲取註解及生成代碼均在編譯時完成,相比於運行時通過反射處理註解,能顯著提升程序性能。
APT 不能修改源文件,只能獲取註解信息與被註解對象信息,並進行自定義處理。宏觀上,APT 是 Java 編譯器提供給開發者在編譯時處理註解的技術,微觀上,具體應用即為繼承自 AbstractProcessor 的實現類。
APT 的原理在於,Java 源碼編譯至 class 文件的過程中,需要經過註解處理器處理,處理器生成的代碼同樣會經歷這一過程,最終生成 class 文件。在 Android 環境中,class 文件被打包為 dex 文件,最後形成 APK 文件。
實現一個基於 APT 的實例,類似於 Butterknife 中的 @BindView 註解,主要步驟包括定義註解、創建註解處理器以及調用處理器生成的代碼。實現過程中,需要構建如下的工程結構:
- app:測試功能
- apt-annotation:自定義註解模塊
- apt-processor:註解處理器模塊
- apt-sdk:通過反射調用 apt-processor 生成方法的模塊
構建步驟如下:
- 在 apt-annotation 中定義自定義註解。
- 在 apt-processor 中引入依賴,依賴 apt-annotation 並需要依賴 auto-service 第三方庫,用於創建註解處理器。
- 在 apt-processor/build.gradle 文件中創建註解處理器。
- 處理器需繼承 AbstractProcessor。
- 代碼編寫中避免使用中文,否則可能無法編譯。
- ClassCreatorFactory 類負責提供生成新類所需代碼。
- app 的 gradle 文件中引入相關依賴。
- 兩個 Activity 中調用相關方法。
- 檢查目錄生成文件。
- 在 app 中調用 apt-sdk 的方法。
APT 技術在 Android 開發中的應用解析至此,更多 Android 開發技術可參考《Android 核心技術手冊》。
Ⅲ apt常用命令
在使用Apt包管理器時,熟悉常用命令是至關重要的。下面將詳細介紹Apt常用命令及其功能,以幫助用戶更有效地管理軟體包。
搜索包使用命令apt-cache search,可以根據關鍵詞查找符合要求的包。
獲取包的詳細信息使用命令apt-cache show,可以查看包的描述、大小、版本等。
安裝包使用命令sudo apt-get install,安裝指定的包。
重新安裝包,使用命令sudo apt-get install -i,在重新安裝之前顯示所有將被更新或刪除的文件。
強制安裝使用命令sudo apt-get -f install,強制安裝,修復缺失的依賴。
刪除包使用命令sudo apt-get remove,移除指定的包。
刪除包及其配置文件使用命令sudo apt-get remove --purge,徹底移除包及其相關配置。
清理系統使用命令sudo apt-get autoremove --purge,自動移除已卸載包的依賴包以及配置文件。
更新源使用命令sudo apt-get update,更新本地的包源信息。
更新已安裝的包使用命令sudo apt-get upgrade,升級已安裝的包至最新版本。
升級整個系統使用命令sudo apt-get dist-upgrade,在升級包的同時調整系統設置。
使用 dselect 升級系統使用命令sudo apt-get dselect-upgrade,提供更強大的升級功能。
了解包的依賴關系使用命令apt-cache depends,顯示指定包的所有依賴。
了解特定依賴使用命令apt-cache rdepends,顯示某個包作為依賴被哪些包使用。
安裝編譯環境使用命令sudo apt-get build-dep,用於安裝特定包的編譯所需環境。
下載包的源代碼使用命令apt-get source,獲取指定包的源代碼。
清理下載文件使用命令組合sudo apt-get clean && sudo apt-get autoclean,分別清理已下載的存檔文件和過時的包。
檢查依賴完整性使用命令sudo apt-get check,確保所有依賴包均處於正常狀態。
自動安裝所需依賴及升級包使用命令apt-get install,同時安裝包及其依賴,自動處理hold標志(停止安裝)的情況。
移除包及其依賴使用命令apt-get remove,在移除包時自動處理依賴關系。
完全移除包使用命令apt-get remove --purge,徹底移除包及其相關配置。
通過這些命令,用戶可以有效管理軟體包,提升系統性能和穩定性。
(3)apt編譯環境擴展閱讀
APT(the Advanced Packaging Tool)是Ubuntu 軟體包管理系統的高級界面,Ubuntu 是基於Debian的,APT由幾個名字以「apt-」打頭的程序組成。apt-get、apt-cache 和apt-cdrom是處理軟體包的命令行工具。
Ⅳ debian怎麼搭建c語言編譯環境
在linux下面做C的話,編輯器很多,emacs,vim,nano,隨便挑一個文本編輯器和筆記本一樣用就好了,編譯環境的話,你要裝這些,有的包可能你已經有了,命令如下
apt-get install linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,')
apt-get install build-essential
這兩個命令會把C和C++編譯環境需要的包都裝上的
Ⅳ (未完)ubuntu20.04 qt6.2.4 aarch64 開發編譯環境配置
install QT6
更新
下載安裝工具
文件許可權
運行在線安裝文件
如果遇到問題:
重新安裝libxcb-xinerama文件
重新運行
輸入賬號,然後安裝。選擇一個版本,如6.2.4整個勾上,然後Next到下載界面。
install opencv
下載opencv
解壓到指定文件夾
新建build文件夾,cmake編譯
編譯程序,編譯完成後安裝
install eigen
下載eigen release
解壓
編譯
完成eigen3的安裝
QT include opencv eigen項目遷移到ubuntu後的編譯中的報錯問題
就可以正常啟動qt creator了。
解決方法:
通常安裝後就能解決問題,如果不行,考慮下面的軟鏈接方法。
詳細見 qt構建遇到 cannot find -l xxx 問題_qt cannot find -l-CSDN博客、 Linux的Qt編譯出現:-1: error: cannot find -lGL問題的解決方法-CSDN博客
雖然教程是用的野火魯班貓,但是方法是通用的
安裝cmake及其他
查看cmake版本
關於燒錄Raspberry pi Image
樹莓派插入SD卡並通電。(使用 Raspberry Pi Imager完成SD鏡像燒錄。)
可以下載( Ubuntu Lts)作為燒錄鏡像
Ubuntu server無界面,使用SSH遠程訪問,使用finalshell:
IP查看tplink中的樹莓派IP,埠默認是22
QT creator添加Device
添加設備,可以在區域網中找到設備。
打開設置,然後add一個Device
需要填寫IP,埠,user name, 如果沒有key,就生成一個key file,然後鏈接,期間需要輸入username對應的密碼。出現下面窗口就是配置好了。
詳細可以看這個鏈接 7. 遠程連接 - [野火]嵌入式Qt應用開發實戰指南-基於LubanCat-RK開發板 文檔
qt creator kits交叉編譯
PC的Ubuntu20.04中下載交叉編譯包 arm-linux-gcc,然後在ARM板卡上部署測試。參考這個網址:
aarch64對應教程如下:
3. Qt程序編譯 — [野火]嵌入式Qt應用開發實戰指南—基於LubanCat-RK開發板 文檔 (embedfire.com)
安裝交叉編譯器:
先看看自己虛擬機(PC)的信息
然後看下嵌入式設備(arm64)的信息
針對arm64嵌入式系統,使用Ubuntu20.04系統apt 安裝交叉編譯器, 其安裝命令是
通過這個指令獲取就不用下面的操作下載壓縮包了,
從網盤獲取交叉編譯器、Qt庫文件(針對aarch64平台)、sysroot文件 # 復制文件到虛擬機系統中
查看解壓到的位置
查看剛才解壓的文件。
安裝完了之後在terminal中輸入aarch64 + TAB,如下就是安裝成了:
編譯源碼測試:
先寫個c文件交叉編譯試試
main.cpp內容:
編譯通過後通過file指令查看文件類型是否是ELF:64bit LSB shared object,ARM aarch64...。如果是,則完成源碼編譯。
編譯後生成了main可執行文件,拷貝到arm64平台測試,查看輸出:hello world!!!。
Qt編譯arm64(aarch64)環境搭建
下載qt6.2.4源代碼,在虛擬機上編譯aarch64版本的庫文件
打開QT Creator,打開kits配置套件
如下添加一個/opt目錄下的qmake
添加gcc g++ aarch64編譯器
添加一個構建套件kit, 如下:
源程序選擇構建套件並運行:
在嵌入式設備linux系統上運行編譯好的程序:
復制Qt庫到板卡,然後設置相應的環境變數,就可以運行程序。 先復制前面編譯的Qt程序到板卡,然後簡單運行程序:
使用winscp拷貝依賴文件到嵌入式設備上,如樹莓派:
解壓完成後,設置該庫為環境變數
並重新運行程序
如果要永久變更,就在~/.bashrc中寫入
終端運行:
板卡上可能要安裝一些庫