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中写入
终端运行:
板卡上可能要安装一些库