当前位置: 首页 > news >正文

电子方案网站建设方案广州冼村为什么叫土豪村

电子方案网站建设方案,广州冼村为什么叫土豪村,做钉子出口哪个网站好,重庆网站服务器建设推荐🔥博客主页:PannLZ 🎋系列专栏:《Linux系统之路》 🥊不要让自己再留有遗憾,加油吧! 文章目录 构建第一个模块1模块的makefile2内核树内构建3内核树外构建 构建第一个模块 可以在两个地方构建模…

在这里插入图片描述

🔥博客主页:PannLZ
🎋系列专栏:《Linux系统之路》
🥊不要让自己再留有遗憾,加油吧!


文章目录

    • 构建第一个模块
      • 1模块的makefile
      • 2内核树内构建
      • 3内核树外构建


构建第一个模块

可以在两个地方构建模块,这取决于是否希望用户能够自己使用内核配置界面启用该模块。

1模块的makefile

makefile是用来执行一组操作的特殊文件,其中最重要的操作是程序的编译。专用工具make用于解析makefile

obj-m := helloworld.oKERNELDIR ?= /lib/modules/$(shell uname -r)/buildall default: modules
install: modules_installmodules modules_install help clean:
$(MAKE) -C $(KERNELDIR) M=$(shell pwd) $@#obj- <X>模式,其中<X>应该是y、m、空白或n
#<X>设置为m,则使用变量obj-m,并将mymodule.o构建为模块。
#<X>设置为y,则使用变量obj-y,mymodule.o将构建为内核的一部分。也可以说它是一个内置模块。
#<X>设置为n,则使用变量obj-n,不会构建mymodule.o。
#obj-$(CONFIG_MYMODULE) += mymodule.o,LE)根据内核配置期间的值计算为y或m#KRNELDIR := /lib/modules/$(shell uname -r)/build:KERNELDIR是预构建的内核源码的位置。构建任何模块都需要预构建内核。
#如果已经从源代码构建了内核,则应该把这个变量设置为内核构建的源代码目录的绝对路径。#all default: modules:此行指示实用程序make执行modules目标
#make default、make all或者简单的make命令将被翻译为make modules来执行。#odules modules_install help clean::这行代表makefile中列出的目标有效。#(MAKE) -C $(KERNELDIR ) M=$(shell pwd),$@:为上面列举的每个目标所执行的规则。
#$ @将被替换为引起规则运行的目标名称。
#调用make modules,则$@将被替换为modules,规则将变为$(MAKE)-C $(KERNELDIR ) M=$(shell pwd) module。#C要求实用程序make在读取makefile或执行其他任何操作之前先更改到指定的目录。
#=$(shell pwd):这与内核构建系统相关。内核makefile使用这个变量来定位要构建的外部模块的目录。.c文件应该被放置在这里。

补充:

  • :=直接赋值操作符,它会立即计算右侧的表达式,并将结果赋值给左侧的变量。一旦赋值,无论后续如何改变右侧的表达式,变量的值都不会改变。

  • ?=条件赋值操作符,只有当该变量之前未定义或为空时,才会对其进行赋值。如果该变量已经被赋值,那么 ?= 将不会改变它的值。

2内核树内构建

在内核树中构建驱动程序之前,应该先确定驱动程序中的哪个目录用于存放.c文件。假若文件名是mychardev.c,它包含特殊字符驱动程序的源代码,则应该把它放在内核源码的drivers/char目录中。驱动程序中的每个子目录都有makefilekconfig文件。将以下内容添加到该目录的kconfig中:

config PACKT_MYCDEVtristate "Our packtpub special Characterdriver"default mhelpSay Y here if you want to support the/dev/mycdev device.The /dev/mycdev device is used to accesspacktpub.

在同目录下的makefile文件中添加

obj-$(CONFIG_PACKT_MYCDEV) += mychardev.o

接着在arch/arm/configs目录下开发板的defconfig中添加下面一行内容:

CONFIG_PACKT_MYCDEV=m

也可以运行make menuconfig来从UI中选择它,然后运行make,构建内核,再运行make modules构建模块(包括自己的模块)

内核源码树中包含的模块安装在/lib/modules/$(KERNELRELEASE)/kernel/中。在Linux系统上,它是/lib/modules/$(uname -r)/kernel/

3内核树外构建

在构建外部模块之前,需要有一个完整的、预编译的内核源代码树。内核源码树版本必须与将加载和使用模块的内核相同。有两种方法可以获得预构建的内核版本。

  • 自己构建(前面讨论过)。

  • 从发行版本库安装linux-headers- *包。

    sudo apt-get update
    sudo apt-get install linux-headers-$(uname -r)
    #这将只安装头文件,而不是整个源代码树。头文件将被安装在/usr/src/linux-headers-$(uname -r)下。
    

处理完makefile后,只需要切换到源码目录并运行make命令或者make modules即可。

交叉编译内核模块时,内核makefile实际上需要了解两个变量:ARCH和CROSS_COMPILE,它们分别表示目标体系结构和编译器的前缀名称。因此内核模块本地编译和交叉编译之间的差别是make命令。下面这条命令是为ARM构建:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-

构建完成!
在这里插入图片描述
在这里插入图片描述

http://www.laogonggong.com/news/95293.html

相关文章:

  • 有什么做海报的网站吗saas 平台架构做网站
  • 站长之家ping检测表情包制作网页
  • 电子商城网站开发需求分析模板百度商城官网
  • 网页设计与网站建设毕业设计nodejs和wordpress
  • 做网站卖什么发财58同城网网站建设
  • 南通e站网站建设织梦网站装修公司源码
  • 欧美一级a做爰片免费网站重庆建一科技发展有限公司
  • 免费建站的网址设计制作网站的公司
  • 查询网站注册信息京东联盟怎么做网站
  • 潍坊网站建设 世纪环球16楼专业制作网站的公司哪家好
  • 做企业网站制作wordpress设置自己的管理邮箱
  • 网站桌面图标怎么做广东创粤建设有限公司网站
  • 河南建设工程招标网站中山专业门户网站制作咨询
  • 青岛教育平台网站建设织梦做手机网站
  • 给别人做网站挣钱么做彩网站
  • 玉环 网站建设高校网站建设招标公告
  • 网站建设项目规划书目录a站插画
  • wordpress调用站点标题看网站建设公司的网站案例
  • 做网站技术服务费属于什么科目品牌vi设计设计生成
  • 支付公司网站制作费怎么做分录做拍卖网站怎么样
  • 网站建设与管理 宋一兵网加速器
  • 什么网站可以做自考试题电商系统平台开发
  • 冠县网站建设义乌市建设银行分行网站
  • 哪个网站上做ppt比较好看建电影网站教程
  • 网站维护是做什么的wordpress跟新到5.0.1是英文
  • 外贸soho东莞建站互联网保险销售平台
  • 网站建设推广扬州北京网站推广seo优化
  • 愿意做cps的网站网站建设 黑龙江
  • 自创网站怎么赚钱燕郊网站建设公司
  • 安庆跨境电商建站哪家好cherry framework wordpress