Linux驱动模块编译模板
hello.c文件:
#include <linux/module.h>
#include <linux/kernel.h> static int hello_init(void)
{
printk("Hello,world!\n"); return ;
} static void hello_exit(void)
{
printk("Goodbye,cruel world!\n");
} module_init(hello_init);
module_exit(hello_exit); MODULE_AUTHOR("Vedic <FZKmxcz@163.com>");
MODULE_LICENSE("Dual BSD/GPL");
Makefile文件:
obj-m +=template.o
template-objs:= hello.o KDIR:=/home/fuzk/project/Prolin/firmware_4/build_dir/linux-sc9820_sc9820_pax/linux-3.10. COMPILER=/opt/toolchain/arm-2012.03/bin/arm-none-linux-gnueabi-gcc
LD_PATH=/opt/toolchain/arm-2012.03/bin/arm-none-linux-gnueabi-ld
AR_PATH=/opt/toolchain/arm-2012.03/bin/arm-none-linux-gnueabi-ar
ARCH_TYPE=arm
#CCFLAGS新GGC要求改用ccflags-y, -I头文件必须是绝对路径 像-I./include压根找不到 宏定义用-D紧跟着宏名字即可不用空格
#ccflags-y += -mfloat-abi=softfp -Ixx/xx/include -DXXX_RRR
#ldflags-y += -L/opt/toolchain/arm-2012.03/lib/gcc/arm-none-linux-gnueabi/4.6. -lgcc -static all:
make CC=$(COMPILER) LD=$(LD_PATH) AR=$(AR_PATH) ARCH=$(ARCH_TYPE) -C $(KDIR) M=$(PWD) modules clean:
make CC=$(COMPILER) LD=$(LD_PATH) ARCH=$(ARCH_TYPE) -C $(KDIR) M=$(PWD) clean
追加:
上面的Makefile其实写得不严谨!首先make命令后处理的Makefile是kernel下的Makefile, 查看内容得知里面除了用CC LD AR 还会用其他的


所以我们要做的是赋值CROSS_COMPILE变量才对
obj-m +=template.o
template-objs:= hello.o KDIR:=/home/fuzk/project/Prolin/firmware_4/build_dir/linux-sc9820_sc9820_pax/linux-3.10. COMPILE=/opt/toolchain/arm-2012.03/bin/arm-none-linux-gnueabi-
ARCH_TYPE=arm #CCFLAGS新GGC要求改用ccflags-y, -I头文件必须是绝对路径 像-I./include压根找不到 宏定义用-D紧跟着宏名字即可不用空格
#ccflags-y += -mfloat-abi=softfp -Ixx/xx/include -DXXX_RRR
#ldflags-y += -L/opt/toolchain/arm-2012.03/lib/gcc/arm-none-linux-gnueabi/4.6. -lgcc -static all:
make CROSS_COMPILE=$(COMPILE) ARCH=$(ARCH_TYPE) -C $(KDIR) M=$(PWD) modules clean:
make CROSS_COMPILE=$(COMPILE) ARCH=$(ARCH_TYPE) -C $(KDIR) M=$(PWD) clean
Linux驱动模块编译模板的更多相关文章
- linux驱动模块编译(初学者)
inux 模块编译步骤(转) 本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂.之所以要写这篇文章,主要是因为从书本上学的话,可能要花更 ...
- 【转】Linux驱动模块编译进内核中
原文网址:http://blog.chinaunix.net/uid-29287950-id-4573481.html BQ27501驱动编译进内核 一. 驱动程序编译进内核的步骤 在 l ...
- G++ 4.4.7 无法编译模板程序,Vs可以,和解?智者尾部留言,本人第一次使用vs pro,通常并且习惯在linux下写些小东西,虽然程序简单;
vs 模板编译运行Ok \ linux g++ 4.4.7编译模板测试程序,报无法定义 template <typename or class 中的 AnyType> 类型的数据 Exam ...
- Linux 内核源码外编译 linux模块--编译驱动模块的基本方法
1.先编写一个简单的hello模块,hello.c 源码如下: #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # defin ...
- linux下 驱动模块编译步骤
本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂.之所以要写这篇文章,主要是因为从书本上学的话,可能要花更长的时间才能学会整个过程,因为 ...
- linux 模块编译步骤(原)
linux 模块编译步骤(原) 博主推荐:<Linux命令模板Licote(原)> 本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者 ...
- linux内核模块编译makefile
linux内核可加载模块的makefile 在开发linux内核驱动时,免不了要接触到makefile的编写和修改,尽管网上的makefile模板一大堆,做一些简单的修改就能用到自己的项目上,但是,对 ...
- linux下编译gcc6.2.0
linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...
- LINUX下编译安装PHP各种报错大集合
本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...
随机推荐
- 使用GitHub作为Maven仓库并引用
网上太多的博客都是那些傻逼抄袭,然后直接复制粘贴然后就成为自己的博客了,这种人,真的很欠揍,我在网上查了一个下午的资料,终于找到一个写得非常详细的兄弟 链接如下:https://blog.csdn.n ...
- 转 c#性能优化秘密
原文:http://www.dotnetperls.com/optimization Generally, using the simplest features of the language pr ...
- 反编译python打包的exe文件
目录 1.前言 2.使用环境 3.还原过程 4.号外 5.exe文件和所用到的反编译工具 6.参考 7.去签名(补漏) 前言 拿到了利用驱动人生进行传播的病毒样本,发现是python打包成的exe文件 ...
- [Lyft Level 5 Challenge 2018 - Elimination Round][Codeforces 1033D. Divisors]
题目链接:1033D - Divisors 题目大意:给定\(n\)个数\(a_i\),每个数的约数个数为3到5个,求\(\prod_{i=1}^{n}a_i\)的约数个数.其中\(1 \leq n ...
- javaWeb+servlet+mysql实现简单的企业员工管理系统
企业员工信息管理系统 一.源码描述 本程序为企业员工信息管理系统.是javaEE一个系统,主要实现登录功能和两个模块信息的增删改查.可以作为JAVAweb学习,也可在原有基础上进行深一步的 ...
- 使用datagrip链接mysql数据库的报错问题.
1. datagrip刚打开时候,选择风格是白是黑后, 会有一个选择什么数据库,有oracle...一大堆,别选错了.我的是mysql,不要选成了windows sql 和sql. 2 基本设置写完, ...
- 百度AI
官网:http://ai.baidu.com/tech/face SDK:https://ai.baidu.com/sdk#bfr API说明 百度Face SDK Android 版是一种面向 An ...
- python—迭代器、生成器
1.迭代器(iteration) 迭代器协议:提供next()方法,该方法要么返回迭代的下一项,要么异常.(只能往后走) 可迭代对象:实现迭代器协议的对象. **字符串.列表.元祖.字典.集合.文件都 ...
- R语言之Apriori算法
---恢复内容开始--- 1.概念 关联分析:用于发现隐藏在大型数据集中的有意义的联系 项集:0或多个项的集合.例如:{啤酒,尿布,牛奶,花生} 是一个4-项集,意义想象成爸爸去超市买啤酒和花生,给儿 ...
- JavaMail技术实现邮件发送转【】
1.导入2个jar包,mail.jar,activation.jar 2.导入的jar包与myeclipse中自带的javaee 中的javaee.jar中的javax.activation包及jav ...