内核头文件, makfile 传参

news2024/9/24 3:24:42

1 内核头文件,主要指的是, 在板卡上的系统上直接 ,编译驱动模块,而不是在虚拟机的内核源码中 去编译内核模块。

---------------------------------------------------------------------------------------------------------------------------

2 makefile 传参 ,指的是, 内核模块使用 makfile 定义的宏定义。

首先是 关于 在普通的makefile中添加宏定义

这里的 INC 也是 一个自己定义的 。

至于怎么包含头文件这里就不 深究了。

然后是在将 内核驱动与Makefile 关联的 宏定义;

网上的资料:

这里是可以追踪一下, KBUILD_CFLAGS_MODULE 的。

--------------------------------------------------------------------------------------------------------------

先来看我自己的测试。

c 文件是这样的。

12 #include <linux/module.h>     
   11 #include <linux/kernel.h>
   10 static int __init helloworld_init(void)
    9 {
    8 ▎   printk(KERN_EMERG "helloworld_init\r\n");
    7 ▎
    6 #ifdef WANG
    5 ▎   printk("this is DEF \n");
    4 #endif
    3 ▎   return 0;
    2 }
    1 static void __exit helloworld_exit(void)
  14  {
    1 ▎   printk(KERN_EMERG "helloworld_exit\r\n");
    2 }
    3
    4 module_init(helloworld_init);
    5 module_exit(helloworld_exit);
    6 MODULE_LICENSE("GPL v2");
    7 MODULE_AUTHOR("topeet");
~

然后是makefile 文件

  export ARCH=arm64#设置平台架构
  export CROSS_COMPILE=aarch64-linux-gnu-#交叉编译器前缀
  KBUILD_CFLAGS_MODULE += -DWANG
  obj-m += two.o
  KDIR :=/home/topeet/source_code/rk356x_linux/kernel/    #内核源码所在虚拟机ubuntu的实际路径
  PWD ?= $(shell pwd)
  all:
  ▎   make -C $(KDIR) M=$(PWD) modules    #make操作
  clean:
  ▎   make -C $(KDIR) M=$(PWD) clean    #make clean操作

编译+ insmode 结果。

可以看到已经有了打印。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2105372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将x减到零的最小操作数问题

欢迎跳转我的主页&#xff1a;羑悻的小杀马特-CSDN博客 目录 一题目简述&#xff1a; 二题目思路&#xff1a; 三解答代码&#xff1a; 一题目简述&#xff1a; leetcode题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二题目思路&#xff1a; 首先这道题…

如何在国内下载llama模型

由于项目需求要下载llama模型&#xff0c;本来觉得这是个很简单的事情&#xff0c;直接去huggingface上下载就行&#xff0c;但是没想到遇到了重重问题&#xff0c;于是写下这篇博客记录一下&#xff0c;希望对别人也有帮助&#xff01; 刚开始搜到的教程是官方给出的&#xf…

C++笔记---string类(简单地使用)

1. string类介绍 string类是C标准库中给出的一种类类型&#xff0c;其目的是为了代替C语言中的字符串。 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是…

基于vue框架的车辆交易管理系统n5xwr(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,汽车品牌,汽车信息,汽车标签,特价汽车 开题报告内容 基于Vue框架的车辆交易管理系统开题报告 一、研究背景与意义 随着汽车市场的蓬勃发展和消费者购车需求的日益增长&#xff0c;车辆交易活动变得愈发频繁和复杂。传统的车辆交…

工业主板在轨道交通中的应用特点

工业主板在轨道交通中的应用特点主要体现在以下几个方面&#xff1a; 一、强大的处理能力 高性能处理器&#xff1a;工业主板通常搭载高性能的处理器&#xff0c;如飞腾D2000八核CPU等&#xff0c;这些处理器能够高效处理轨道交通系统中的大量数据&#xff0c;确保系统运行的…

Python实战: 写入 Excel 的多个 Sheet

更多内容 个人网站&#xff1a;孔乙己大叔 一、引言 在处理大型数据集或需要向非技术用户展示分析结果时&#xff0c;Excel 是一种广泛使用的工具。然而&#xff0c;手动创建包含多个 Sheet 的 Excel 文件既耗时又容易出错。幸运的是&#xff0c;Python 提供了自动化这一过程的…

51单片机仿真单只共阳级数码管循环显示0-9

51单片机仿真单只共阳级数码管循环显示0-9 单片机AT89C51控制7段共阳数码管的实验报告 一、实验目的 本实验旨在通过使用AT89C51单片机和7段共阳数码管&#xff0c;学习如何编写控制程序以及实现数码管的动态显示。通过此实验&#xff0c;加深对单片机基本原理和实际应用的理…

进程间通信方式(共享内存、信号灯集、消息队列)

共享内存 特点 1&#xff09;共享内存是一种最为高效的进程间通信方式&#xff0c;进程可以直接读写内存&#xff0c;而不需要任何数据的拷贝。 2&#xff09;为了在多个进程间交换信息&#xff0c;内核专门留出了一块内存区&#xff0c;可以由需要访问的进程 将其映射到自己的…

1.第二阶段x86游戏实战2-前言

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本次会有100章左右&#xff0c;会从0基础开始&#xff0c;内容有找游戏中的数据、分析游戏中的数据&…

C++ | Leetcode C++题解之第389题找不同

题目&#xff1a; 题解&#xff1a; class Solution { public:char findTheDifference(string s, string t) {int ret 0;for (char ch: s) {ret ^ ch;}for (char ch: t) {ret ^ ch;}return ret;} };

REAL-FAKE: EFFECTIVE TRAINING DATA SYNTHESISTHROUGH DISTRIBUTION MATCHING 论文学习

这篇文章主要讲的是生成数据在模型训练中的作用&#xff0c;对于接下来要研究的生成多模态数据具有重要的作用。 文章摘要首先讲生成数据很重要&#xff0c;但在训练高级的模型的时候效果不好。论文主要研究的是这背后的原理并且证明了生成数据的作用。 介绍部分&#xff0c;…

在社交物联网中使用MQTT协议和Hardy Wall算法实现有效的多播通信

这篇论文的标题是《EFFECTIVE MULTICAST COMMUNICATION USING MQTT PROTOCOL AND HARDY WALL ALGORITHM IN SIOT》&#xff0c;作者是 S.Jayasri 和 Dr. R.Parameswari&#xff0c;发表在《International Journal of Applied Engineering & Technology》2023年9月的第5卷第…

kubeadm方式升级k8s集群

一、注意事项 升级前最好备份所有组件及数据&#xff0c;例如etcd 不要跨两个大版本进行升级&#xff0c;可能会存在版本bug&#xff0c;如&#xff1a; 1.19.4–>1.20.4 可以 1.19.4–>1.21.4 不可以 跨多个版本的可以逐个版本进行升级。 二、查看当前版本 [rootk8s…

Solidity初体验

一、概念知识 什么是智能合约&#xff1f; 智能合约是仅在满足特定条件时才在区块链上部署和执行的功能&#xff0c;无需任何第三方参与。 由于智能合约本质上是不可变的和分布式的&#xff0c;因此它们在编写和部署后无法修改或更新。此外&#xff0c;分布式的意义在于任何…

上证50ETF期权交易策略有哪些?期权交易时要注意什么?

今天带你了解上证50ETF期权交易策略有哪些&#xff1f;期权交易时要注意什么&#xff1f;上证50ETF期权是一种以华夏50etf基金为标的物的金融衍生品&#xff0c;它允许投资者通过买卖期权合约来对冲风险或进行投机。 期权趋势型策略 趋势型的策略就是我们通常说的追涨杀跌&am…

git代码托管仓库02(分支与冲突)

分支 所有版本控制系统都以某种形式支持分支。使用分支意味着可以把自己的工作从开发主线上分离来进行重大的bug修改&#xff0c;开发新的功能&#xff0c;以免影响主线开发 该master就是分支 查看分支&#xff1a;git branch 添加分支&#xff1a; git branch 分支名 可以看…

C++笔记17•数据结构:二叉搜索树(K模型/KV模型实现)•

二叉搜索树 1.二叉搜索树 1. 二叉搜索树的查找 a 、从根开始比较&#xff0c;查找&#xff0c;比根大则往右边走查找&#xff0c;比根小则往左边走查找。 b 、最多查找高度次&#xff0c;走到到空&#xff0c;还没找到&#xff0c;这个值不存在。2. 二叉搜索树的插入 插入的具…

【图解版】Likes Vs Dislikes——C语言提高题【7 kyu】

一、原题 链接&#xff1a;Training on Likes Vs Dislikes | Codewars YouTube had a like and a dislike button, which allowed users to express their opinions about particular content. It was set up in such a way that you cannot like and dislike a video at the…

集成电路学习:什么是PWM脉冲宽度调制

一、PWM&#xff1a;脉冲宽度调制 PWM&#xff0c;全称为脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;&#xff0c;是一种通过调整脉冲信号的宽度来控制电路输出的技术。在PWM中&#xff0c;信号的输出由一系列等幅值的脉冲组成&#xff0c;这些脉冲的宽度根据…

h5适配iOS——window.open失效

在H5开发中&#xff0c;打开一个新的标签页一般使用window.open。安卓中没啥限制&#xff0c;但是iOS的Safari出于安全限制&#xff0c;想使用该方法打开新的网页&#xff0c;必须得有用户手动触发&#xff0c;用代码自动打开是会失效的。 也就是说&#xff0c;window.open必须…