当前位置: 首页 > 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.mrgr.cn/news/79265.html

相关文章:

  • MySQL其四,各种函数,以及模拟了炸裂函数创建用户等操作
  • ISO 45001 职业健康安全管理体系的实施具有多方面的重要意义
  • yarn 安装问题
  • C++ 运算符重载 (备查)
  • 新能源汽车 “能量侠”:移动充电机器人开启便捷补电新征程
  • [Collection与数据结构] 位图与布隆过滤器
  • 单链表---合并两个链表
  • Yagmail邮件发送库:如何用Python实现自动化邮件营销?
  • 【0356】Postgres内核 XLOG读取之 打开一个 logfile segment ( 3 - 1 )
  • MongoDB的简单使用
  • 深入浅出:SOME/IP-SD的工作原理与应用
  • axios笔记
  • HTML笔记()蜘蛛纸牌之卡牌拖拽
  • 基于STM32F4实现步进电机闭环控制实现(无PID)
  • python 装饰器学习与实践
  • javaScriptDOM获取
  • 源码分析之Openlayers图层篇概览
  • OpenBayes贝式计算创始人受邀参加第九届中国开源年会,分享 AI4S 前沿洞察
  • Elasticsearch 入门
  • 每日速记10道MySQL面试题15
  • UE4_材质节点_有关距离的_流体模拟
  • dbus接口方法的variant类型传参详解
  • hadoop单机安装
  • 二、部署docker
  • 【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)
  • 工作:SolidWorks从3D文件导出2D的DWG或DXF类型文件方法