当前位置: 首页 > news >正文

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>)

http://www.lryc.cn/news/498050.html

相关文章:

  • gpt-computer-assistant - 极简的 GPT-4o 客户端
  • 中国移动量子云平台:算力并网590量子比特!
  • Vue 3 中的计算属性(Computed Properties)详解
  • AWS S3 权限配置与文件上传下载指南
  • 6. 一分钟读懂“抽象工厂模式”
  • CV(2)-插值和卷积
  • 学习threejs,通过设置纹理属性来修改纹理贴图的位置和大小
  • fastadmin 后台插件制作方法
  • 9. 一分钟读懂“策略模式”
  • 65页PDF | 企业IT信息化战略规划(限免下载)
  • Android 单元测试断言校验方法 org.junit.Assert
  • 亚马逊云(AWS)使用root用户登录
  • 用点云信息来进行监督目标检测
  • Navicat连接服务器MySQL
  • FastAPI 响应状态码:管理和自定义 HTTP Status Code
  • 【人工智能数学基础篇】线性代数基础学习:深入解读矩阵及其运算
  • RNACOS:用Rust实现的Nacos服务
  • JAVA |日常开发中JSTL标签库详解
  • Apache HttpClient 4和5访问没有有效证书的HTTPS
  • Lighthouse(灯塔)—— Chrome 浏览器性能测试工具
  • 扫二维码进小程序的指定页面
  • 如何用IntelliJ IDEA开发Android Studio用自定义Gradle插件
  • YOLOv8实战道路裂缝缺陷识别
  • RPC一分钟
  • Elasticsearch ILM 故障排除:常见问题及修复
  • Unity 设计模式-策略模式(Strategy Pattern)详解
  • 【Maven系列】深入解析 Maven 常用命令
  • 微信小程序之简单的数据中心管理平台(1)
  • sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)
  • 2024年认证杯SPSSPRO杯数学建模C题(第一阶段)云中的海盐解题全过程文档及程序