Yocto bitbake and codeSonar
1 mdm
1.1 屏蔽mdm sysvinit的console输出
- uboot传入参数的时候传入console=null,这样Linux启动信息没有了
- 还需要在Linux配置中去掉Support for console on AMBA serial port
- 文件系统/etc/inittab文件里注释掉::respawn:/sbin/getty -L ttyS000 115200 vt100 -n root -I "Auto login as root ..."
1.2 Ubuntu service
/usr/sbin/service
是个脚本,只是没有后缀.sh。
2 cmake
2.1 Yocto SDK
Download SDK install script, then run the script to install SDK to target directory.
SDK shell
2.2 musl libc dynamic-linker
$CC -o test test.c \
-Xlinker \
--dynamic-linker=/lib/ld-musl-aarch64.so.1
2.3 静态库
CMakeLists.txt中add_library()不指定SHARED,就是编译静态库。
2.4 静态可执行
CMakeLists.txt中target_link_libraries()添加-static,就是编译静态可执行。
3 bitbake
3.1 bitbake
.bb file
S = <Makefile directory>
SRCREV = <gerrit commit id>
SRC_URI += "file://0001-xxx.patch;patchdir=${WORKDIR}/git \
file://0002-xxx.patch;patchdir=${WORKDIR}/git"
0001-xxx.patch and 0002-xxx.patch are under current folder files.
3.2 Yocto添加应用程序
[26th-Apr-2022]
rm /path/to/bitbake.lock
For user space Makefile, refer to 3.3 of Android开发环境搭建和编译系统。
meta-xxx/recipes-bsp/hello-bsp/files/COPYRIGHT
meta-xxx/recipes-bsp/hello-bsp/files/Makefile
meta-xxx/recipes-bsp/hello-bsp/files/include
meta-xxx/recipes-bsp/hello-bsp/files/src
meta-xxx/recipes-bsp/hello-bsp.bb
SRC_URI = "file://COPYRIGHT"
SRC_URI += "file://Makefile"
SRC_URI += "file://include"
SRC_URI += "file://src"
S = "${WORKDIR}"
TARGET_CC_ARCH += "${LDFLAGS}"
do_compile () {
echo "${WORKDIR}"
oe_runmake
}
do_install () {
install -d ${D}${sbindir}
# hello_bsp name comes from Makefile.
install -m 0755 hello_bsp ${D}${sbindir}/
}
bitbake -c cleanall hello-bsp
bitbake hello-bsp
Build whole project:
core-image-base.bb
IMAGE_INSTALL_append = "hello-bsp"
bitbake core-image-base
3.3 bitbake cmake
[26th-Apr-2022]
Need install ninja-build in Linux PC, otherwise cmake could not generate Makefile under build directory.
The following first command in bb file is used to mkdir build folder for cmake, second command is used to pass parameters to cmake. Don't need add do_compile() and do_install() for cmake in bb file.
inherit pkgconfig cmake
EXTRA_OECMAKE += "-DXXX"
bitbake -c cleanall hello-bsp
bitbake hello-bsp
"inherit cmake" will call cmake.bbclass of OE build system.
3.4 standalone cmake showcase
wget http://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz
1) export BBPATH=/path/to/project
2) conf/bitbake.conf
CACHE = "${TMPDIR}/cache"
STAMP = "${TMPDIR}/stamps"
TMPDIR = "${TOPDIR}/tmp"
B = "${TMPDIR}"
T = "${TMPDIR}/work"
BBFILES = "${BBPATH}/xxx.bb"
3) classes/base.bbclass
addtask build
4) classes/cmake.bbclass
S="${PWD}/xxx/build"
cmake_do_build() {
. /path/to/environment-setup-aarch64-poky-linux
export SYSROOT_PATH=/path/to/sysroots/aarch64-poky-linux
rm -rf "${S}"
mkdir "${S}"
cd "${S}"
cmake ../ \
-DCMAKE_INSTALL_PREFIX=$SYSROOT_PATH/usr/ \
${EXTRA_OECMAKE}
make
make install
}
EXPORT_FUNCTIONS do_build
5) xxx.bb
DESCRIPTION="build xxx"
PN="xxx"
EXTRA_OECMAKE +="-Dxxx=1"
inherit cmake
6)
bitbake -s
bitbake xxx -vDD
3.5 Linux为普通用户添加Docker权限
apt install docker.io
sudo groupadd docker
sudo usermod -aG docker <username>
newgrp docker
3.6 bitbake列出所有的target
bitbake-layers show-recipes |grep <xxx>
bitbake <xxx>
4 codeSonar
MISRA C:2012
1) Create Project Tree and Create Project in codeSonar webserver.
2) csshiftleft/scripts/config.ini
ProjectName = the code sonar reports directory in webserver.
3) csshiftleft/build/module_build.sh
Add build commands to this file.
4) build
cd csshiftleft/scripts/
python3 codesonarbuild.py
codeSonar userName and Password are the Windows login userName and Password.
5 ctest
add_definitions()需要加在ADD_SUBDIRECTORY()之前,不然宏不起作用。
ADD_SUBDIRECTORY(unittest)
enable_testing()
add_test(
NAME ${BINARY_NAME}
COMMAND ${BINARY_NAME} # It will call gtest main()
<arg_list>)
相关文章:

Yocto bitbake and codeSonar
1 mdm 1.1 屏蔽mdm sysvinit的console输出 - uboot传入参数的时候传入consolenull,这样Linux启动信息没有了 - 还需要在Linux配置中去掉Support for console on AMBA serial port - 文件系统/etc/inittab文件里注释掉::respawn:/sbin/getty -L ttyS000 115200 vt100…...

gpt-computer-assistant - 极简的 GPT-4o 客户端
更多AI开源软件: AI开源 - 小众AIhttps://www.aiinn.cn/sources gpt-computer-assistant是一个将 ChatGPT MacOS 应用程序提供给 Windows 和 Linux 的替代工作。因此,这是一个全新且稳定的项目。此时,您可以轻松地将其作为 Python 库安装&am…...

中国移动量子云平台:算力并网590量子比特!
在技术革新的浪潮中,量子计算以其独特的并行处理能力和指数级增长的计算潜力,有望成为未来技术范式变革和颠覆式创新应用的新源泉。中国移动作为通信行业的领军企业,致力于量子计算技术研究,推动量子计算产业的跨越式发展。 量子云…...

Vue 3 中的计算属性(Computed Properties)详解
目录 Vue 3 中的计算属性(Computed Properties)详解 引言 什么是计算属性? 创建和使用计算属性 示例 1:基本用法 示例 2:带有 getter 和 setter 的计算属性 计算属性 vs 方法 Vue 3 中的计算属性(Co…...

AWS S3 权限配置与文件上传下载指南
本文介绍如何配置 AWS S3 存储桶的访问权限,实现 EC2 实例上传文件和本地用户下载文件的功能。 权限配置 © ivwdcwso (ID: u012172506) 1. EC2 角色上传权限 创建 IAM 角色并附加以下策略,允许 EC2 实例上传文件到 S3: {"Version": "2012-10-17&qu…...

6. 一分钟读懂“抽象工厂模式”
6.1 模式介绍 书接上文,工厂方法模式只能搞定单一产品族,遇到需要生产多个产品族时就歇菜了。于是,在需求的“花式鞭策”下,程序员们再次绷紧脑细胞,创造出了更强大的抽象工厂模式,让工厂一次性打包多个产品…...

CV(2)-插值和卷积
前言 仅记录学习过程,有问题欢迎讨论 看看年前可以学到哪。 频率: 灰度值变化程度的指标,是灰度再平面上的梯度幅值: 幅值: 是在一个周期内,交流电瞬时出现的最大绝对值,也是一个正弦波,波…...

学习threejs,通过设置纹理属性来修改纹理贴图的位置和大小
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Texture 贴图 二、…...

fastadmin 后台插件制作方法
目录 一:开发流程 二:开发过程 (一):后台功能开发 (二):功能打包到插件目录 (三):打包插件 (四):安装插件…...

9. 一分钟读懂“策略模式”
9.1 模式介绍 策略模式是一种行为型设计模式,用于在运行时灵活切换对象的行为或算法,它将算法封装为独立的类,使得它们可以互相替换,而不会影响使用这些算法的客户端代码。 策略模式的核心思想是:定义一系列可互换的算…...

65页PDF | 企业IT信息化战略规划(限免下载)
一、前言 这份报告是企业IT信息化战略规划,报告详细阐述了企业在面对新兴技术成熟和行业竞争加剧的背景下,如何通过三个阶段的IT战略规划(IT 1.0基础建设、IT 2.0运营效率、IT 3.0持续发展),系统地构建IT管理架构、应…...

Android 单元测试断言校验方法 org.junit.Assert
判断布尔值 assertTrue assertFalse 判断对象非空 assertNull(object); 案例: PersistableBundle result Util.getCarrierConfig(mockContext, subId);assertNull(result); 判断是否相等 assertEquals("mocked_string", result.toString()); package or…...

亚马逊云(AWS)使用root用户登录
最近在AWS新开了服务器(EC2),用于学习,遇到一个问题就是默认是用ec2-user用户登录,也需要密钥对。 既然是学习用的服务器,还是想直接用root登录,下面开始修改: 操作系统是࿱…...

用点云信息来进行监督目标检测
🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊 目录 概述问题分析Making Lift-splat work well is hard深度不准确深度过拟合不准确的BEV语义 模型总体框架显性深度监督 深度细化模块演示效果核心…...

Navicat连接服务器MySQL
Navicat连接服务器MySQL 1. Navicat连接服务器MySQL2. 如何查看MySQL用户名和密码3. 修改MySQL登录密码4. 安装MySQL(Centos7)遇到错误和问题 1. error 1045 (28000): access denied for user ‘root’‘localhost’ (using password:yes) 1. Navicat连接服务器MySQL 选择数据…...

FastAPI 响应状态码:管理和自定义 HTTP Status Code
FastAPI 响应状态码:管理和自定义 HTTP Status Code 本文介绍了如何在 FastAPI 中声明、使用和修改 HTTP 状态码,涵盖了常见的 HTTP 状态码分类,如信息响应(1xx)、成功状态(2xx)、客户端错误&a…...

【人工智能数学基础篇】线性代数基础学习:深入解读矩阵及其运算
矩阵及其运算:人工智能入门数学基础的深入解读 引言 线性代数是人工智能(AI)和机器学习的数学基础,而矩阵作为其核心概念之一,承担着数据表示、变换和运算的重任。矩阵不仅在数据科学中广泛应用,更是神经网…...

RNACOS:用Rust实现的Nacos服务
RNACOS是一个使用Rust语言开发的Nacos服务实现,它继承了Nacos的所有核心功能,并在此基础上进行了优化和改进。作为一个轻量级、快速、稳定且高性能的服务,RNACOS不仅包含了注册中心、配置中心和Web管理控制台的功能,还支持单机和集…...

JAVA |日常开发中JSTL标签库详解
JAVA |日常开发中JSTL标签库详解 前言一、JSTL 概述1.1 定义1.2 优势 二、JSTL 核心标签库2.1 导入 JSTL 库2.2 <c:out>标签 - 输出数据2.3 <c:if>标签 - 条件判断2.4 <c:choose>、<c:when>和<c:otherwise>标签 - 多条件选择 结束语优…...

Apache HttpClient 4和5访问没有有效证书的HTTPS
本文将展示如何配置Apache HttpClient 4和5以支持“接受所有”SSL。 目标很简单——访问没有有效证书的HTTPS URL。 SSLPeerUnverifiedException 在未配置SSL的情况下,尝试消费一个HTTPS URL时会遇到以下测试失败: Test void whenHttpsUrlIsConsumed…...

Lighthouse(灯塔)—— Chrome 浏览器性能测试工具
1.认识 Lighthouse Lighthouse 是 Google 开发的一款开源性能测试工具,用于分析网页或 Web 应用的性能、可访问性、最佳实践、安全性以及 SEO 等关键指标。开发人员可以通过 Lighthouse 快速了解网页的性能瓶颈,并基于优化建议进行改进。 核心功能&…...

扫二维码进小程序的指定页面
草料二维码解码器 微信开发者工具 获取二维码解码的参数->是否登陆->跳转 options.q onLoad: function (options) {// console.log("options",options.q)if (options && options.q) {// 解码二维码携带的链接信息let qrUrl decodeURIComponent(optio…...

如何用IntelliJ IDEA开发Android Studio用自定义Gradle插件
博主所用软件版本为: IntelliJ IDEA 2024.1.4 (Community Edition) Android Studio Ladybug Feature Drop | 2024.2.2 Beta 1 1、制作gradle插件(IntelliJ IDEA 2024.1.4) 新建groovy工程,File–>New–>Project… 右键点…...

YOLOv8实战道路裂缝缺陷识别
本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对道路裂缝数据集进行训练和优化,该数据集包含丰富的道路裂缝图像样本…...

RPC一分钟
概述 微服务治理:Springcloud、Dubbo服务通信:Grpc、Trift Dubbo 参考 Dubbo核心功能,主要提供了:远程方法调用、智能容错和负载均衡、提供服务自动注册、自动发现等高效服务治理功能。 Dubbo协议Dubbo支持dubbo、rmi、http、…...

Elasticsearch ILM 故障排除:常见问题及修复
作者:来自 Elastic Stef Nestor 大家好!我们的 Elasticsearch 团队正在不断改进我们的索引生命周期管理 (index Lifecycle Management - ILM) 功能。当我第一次加入 Elastic Support 时,我通过我们的使用 ILM 实现自动滚动教程快速上手。在帮…...

Unity 设计模式-策略模式(Strategy Pattern)详解
策略模式(Strategy Pattern)是一种行为型设计模式,定义了一系列算法,并将每种算法封装到独立的类中,使得它们可以互相替换。策略模式让算法可以在不影响客户端的情况下独立变化,客户端通过与这些策略对象进…...

【Maven系列】深入解析 Maven 常用命令
前言 在当今的软件开发过程中,项目管理是至关重要的一环。项目管理包括了项目构建、依赖管理以及发布部署等诸多方面。而在Java生态系统中,Maven已经成为了最受欢迎的项目管理工具之一。Maven 是一套用于构建、依赖管理和项目管理的工具,主要…...

微信小程序之简单的数据中心管理平台(1)
微信小程序之简单的数据中心管理平台(1) 引言 随着微信小程序的广泛应用,越来越多的企业开始探索如何利用这一技术开发高效、便捷的管理平台。数据中心管理作为信息化建设的重要组成部分,需要一个灵活、可扩展的界面来实现资源的…...

sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)
1. MySQL 条件 数据库用户需要具备高权限(如 FILE 权限)。数据库服务运行用户需要对目标目录有写权限。Web 服务器有可写目录,且支持执行上传的脚本(如 PHP、JSP 等)。 原理 利用 MySQL 的 SELECT ... INTO OUTFIL…...