首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bitbake LibSocketCAN

Bitbake LibSocketCAN
EN

Stack Overflow用户
提问于 2022-03-25 13:29:08
回答 3查看 227关注 0票数 0

我正试图将libsocketcan建立在我的形象中。为了在我的主要应用程序配方中添加libsocketcan,我添加了IMAGE_INSTALL_append += " libsocketcan "。在用Eclipse调试我的应用程序时,这个功能非常好。当我试图撕毁我的申请时,有人告诉我

代码语言:javascript
复制
fatal error: libsocketcan.h: No such file or directory

我不知道我在哪里失去了我的依赖。Makefile.am

代码语言:javascript
复制
AUTOMAKE_OPTIONS = foreign subdir-objects

bin_PROGRAMS = MAIN_Application

MAIN_Application_LDADD = -lsocketcan -lpthread

AM_CPPFLAGS = \
-I$(srcdir)/include \
-I$(srcdir)/include/utilities \
-I$(srcdir)/include/comms

MAIN_Application_SOURCES = \
src/main.c \
src/scheduler.c \
src/utilities/time_conversions.c \
src/utilities/ring_buffer.c \
src/utilities/logger.c \
src/comms/can.c

我相信这是唯一能起作用的文件。还有其他人面临过这种情况吗?我还需要做些什么才能让我的烤面包找到它呢?

编辑:菜谱作为请求

代码语言:javascript
复制
LICENSE = "MIT"
IMAGE_LINGUAS = " "

# Base image Install
IMAGE_INSTALL = " packagegroup-core-boot ${CORE_IMAGE_EXTRA_INSTALL}"

# Configure image base size
IMAGE_ROOTFS_SIZE ?= "4096"
IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 2048", "", d)}"

# User preferences 
inherit core-image
inherit extrausers

# Change root password (note the capital -P)
EXTRA_USERS_PARAMS = "\
  usermod -P toor  root; \
  useradd -P michael -G sudo  michael; \
  "

# uncomment the line %sudo ALL=(ALL) ALL in /etc/sudoers
modify_sudoers() {
    sed 's/# %sudo/%sudo/' < ${IMAGE_ROOTFS}${sysconfdir}/sudoers > ${IMAGE_ROOTFS}${sysconfdir}/sudoers.tmp
    mv ${IMAGE_ROOTFS}${sysconfdir}/sudoers.tmp ${IMAGE_ROOTFS}${sysconfdir}/sudoers
}
ROOTFS_POSTPROCESS_COMMAND_append = " modify_sudoers;"

# Dependencies
DEPENDS = " libsocketcan "

# Install necessary libraries
IMAGE_INSTALL_append += " packagegroup-core-ssh-openssh "
IMAGE_INSTALL_append += " can-utils "
IMAGE_INSTALL_append += " libsocketcan"
IMAGE_INSTALL_append += " sudo "
IMAGE_INSTALL_append += " iw wireless-tools wpa-supplicant "

# Install SMG applications
IMAGE_INSTALL_append += " udevrules "
IMAGE_INSTALL_append += " mainapplication "

# Apply kernel customizations
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://kernel_customization.cfg"

# Remove image features
IMAGE_INSTALL_remove += " packagegroup-fsl-optee-imx"
BAD_RECOMMENDATIONS = " udev-hwdb" 

#MKUBIFS_ARGS="--leb-size 126976 --min-io-size 2048 --max-leb-cnt 3600"
#UBINIZE_ARGS="--peb-size 128KiB --min-io-size 2048 --sub-page-size 2048"
#IMAGE_FSTYPES += " ubi ubifs"

编辑2:主要应用程序配方

代码语言:javascript
复制
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "\
    file://MAIN_Application \
        file://services \   
    "

inherit autotools systemd

S = "${WORKDIR}/MAIN_Application"

SYSTEMD_SERVICE_${PN} = "MAINapplication.service"

do_install_append () {
    install -d ${D}${systemd_system_unitdir}
    install -m 0644 ${WORKDIR}/services/MAINapplication.service ${D}${systemd_system_unitdir}
    sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_system_unitdir}/MAINapplication.service
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-03-25 14:07:15

libsocketcan提供了以下软件包:

代码语言:javascript
复制
tmp/work/aarch64-poky-linux/libsocketcan/0.0.11-r0/image
└── usr
    ├── include
    │   ├── can_netlink.h
    │   └── libsocketcan.h
    ├── lib
    │   ├── libsocketcan.so -> libsocketcan.so.2.3.0
    │   ├── libsocketcan.so.2 -> libsocketcan.so.2.3.0
    │   ├── libsocketcan.so.2.3.0
    │   └── pkgconfig
    │       └── libsocketcan.pc

添加DEPENDS += "libsocketcan"将导致将所有这些文件填充到自定义层的工作目录中。

注意:您的食谱似乎没有安装您的MAIN_Application输出二进制文件。所以你的食谱看起来应该是:

代码语言:javascript
复制
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "\
    file://MAIN_Application \
        file://services \   
    "

inherit autotools systemd

S = "${WORKDIR}/MAIN_Application"

DEPENDS += "libsocketcan"

SYSTEMD_SERVICE_${PN} = "MAINapplication.service"

do_install_append () {
    install -d ${D}${systemd_system_unitdir}
    install -m 0644 ${WORKDIR}/services/MAINapplication.service ${D}${systemd_system_unitdir}
    sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_system_unitdir}/MAINapplication.service
    install -m 0644 ${S}/MAIN_Application ${D}${bindir}
}

只需确保MAIN_Application是正确的二进制名称。

票数 1
EN

Stack Overflow用户

发布于 2022-03-25 13:36:53

IMAGE_INSTALL_append将包添加到图像中。

这与您的应用程序的构建时依赖关系不大。

您应该添加到您的app.bb是:

取决于= "libsocketcan“

票数 1
EN

Stack Overflow用户

发布于 2022-03-25 14:00:21

这是一个帮助你解决一些与你的形象食谱相关的问题的答案:

以下是一些重要的评论:

  • IMAGE_INSTALL

代码语言:javascript
复制
IMAGE_INSTALL = " packagegroup-core-boot ${CORE_IMAGE_EXTRA_INSTALL}"
...
inherit core-image

永远不要在IMAGE_INSTALL之前重写core-image,因为IMAGE_INSTALL of core-image不会生效。

  • Variable assignement

代码语言:javascript
复制
IMAGE_INSTALL_append += " packagegroup-core-ssh-openssh "
IMAGE_INSTALL_append += " can-utils "
IMAGE_INSTALL_append += " libsocketcan"
IMAGE_INSTALL_append += " sudo "
IMAGE_INSTALL_append += " iw wireless-tools wpa-supplicant "

不要将append+=结合使用,只使用其中之一。

  • DEPENDS ??图像食谱专门用于收集菜谱,创建图像根和最终图像类型(wic,.)你不需要DEPENDS.

  • SRC_URI ??这也是一个非图像的食谱变量,它生效了吗?将内核配置片段移动到您的自定义virtual/kernel包配方.

我推荐您的形象食谱如下:

代码语言:javascript
复制
LICENSE = "MIT"
IMAGE_LINGUAS = " "

# Configure image base size
IMAGE_ROOTFS_SIZE ?= "4096"
IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 2048", "", d)}"

# User preferences 
inherit core-image extrausers

# Change root password (note the capital -P)
EXTRA_USERS_PARAMS = "\
  usermod -P toor  root; \
  useradd -P michael -G sudo  michael; \
  "

# uncomment the line %sudo ALL=(ALL) ALL in /etc/sudoers
modify_sudoers() {
    sed 's/# %sudo/%sudo/' < ${IMAGE_ROOTFS}${sysconfdir}/sudoers > ${IMAGE_ROOTFS}${sysconfdir}/sudoers.tmp
    mv ${IMAGE_ROOTFS}${sysconfdir}/sudoers.tmp ${IMAGE_ROOTFS}${sysconfdir}/sudoers
}
ROOTFS_POSTPROCESS_COMMAND_append = " modify_sudoers;"

# Install necessary libraries
IMAGE_INSTALL_append = " packagegroup-core-ssh-openssh \
            can-utils \
            libsocketcan \
            sudo \
            iw wireless-tools wpa-supplicant"

# Install SMG applications
IMAGE_INSTALL_append = " udevrules \
            mainapplication"

# Remove image features
IMAGE_INSTALL_remove += " packagegroup-fsl-optee-imx"
BAD_RECOMMENDATIONS = " udev-hwdb" 

#MKUBIFS_ARGS="--leb-size 126976 --min-io-size 2048 --max-leb-cnt 3600"
#UBINIZE_ARGS="--peb-size 128KiB --min-io-size 2048 --sub-page-size 2048"
#IMAGE_FSTYPES += " ubi ubifs"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71617753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档