【问题标题】:Why isn't j1939.h include in the Ubuntu 18.04 Linux Kernel?为什么 j1939.h 不包含在 Ubuntu 18.04 Linux 内核中?
【发布时间】:2020-10-28 21:51:58
【问题描述】:

我正在尝试在运行 Ubuntu 18.04、内核 5.4.0-52-generic 的嵌入式 Linux 系统上使用 CAN J1939 标准。

This elinux page 表示 j1939.h “从 v5.4 开始进入主线内核”。而kernel.org's documentation for j1939 表示它在主内核中。

最后,我确实安装了 can-utils。

当我使用 #include <linux/can/j1939.h> 编译 cpp 文件时,我收到 no such file or directory 错误。

我已经通过linux/can 目录确认,j1939.h 不存在。我的 v5.4 内核没有j1939.h 有什么原因吗?如何在我的程序中最好地使用j1939.h

【问题讨论】:

    标签: c linux can-bus socketcan


    【解决方案1】:

    您需要这些头文件的开发包。你可以在 Ubuntu Packages 网站上搜索你需要的包。 IE。在这种情况下 packages containing j1939.h。您可能正在寻找linux-libc-devlinux-headers-5.4.0-26

    【讨论】:

    • 啊,好信息。是否有一些明显的方法可以知道某些标头是否需要额外的包?
    • 通常,如果您需要标头,您将需要开发包。 “通用” linux 桌面包含与 CAN 相关的标头几乎没有意义,因此默认情况下不会安装它们。你最好的选择是简单地在我链接的页面上搜索,看看哪些包是必要的。如果它们已经安装,Ubuntu 会告诉你。
    • @Cameron 如果这回答了你的问题,请投票/接受。
    • 它实际上看起来好像there isn't a package available for Bionic, 18.04j1939.h。在这种情况下,是否有另一种使用该标头的最佳做法?
    • 啊,这很烦人。您可以尝试从 Ubuntu 软件包网站下载标头和软件包本身的 .deb 文件并手动安装。不理想,但通常确实有效。
    猜你喜欢
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多