编译与配置

Linux内核配置与编译 文章目录Linux内核配置与编译1 配置内核1.1 为什么需要配置内核1.2 如何配置内核1.3 内核配置结果2 编译内核2.1 编译内核2.2 编译内核模块2.3 制作3 安装内核4 清理内核4.1 make clean4.2 make disclean Linux内核配置与编译 1 配置内核 1.1 为什么需要配置内核   1 硬件的需求   2 软件的需求 1.2 如何配置内核   make config:基于文件模式的交互式配置   make menuconfig: 基于文本模式的菜单型配置 一般选 阅读详情
Linux内核的编译以及加载
运行make menuconfig等时,配置工具首先分析体系结构对应/arch/xxx/Kconfig 文件(xxx即为传入的arch参数)
文件中除了包含一些与体系结构相关的配置项和配置菜单以外,还通过source语句引入了一系列的Kconfig文件,而这
些Kconfig又有可能通过source引入下一层的Kconfig,配置工具更具Kconfig包含的菜单和条目即可描绘出一个分层结
构。
Kconfig和Makefile
在Linux内核中增加程序需要完成以下3项工作。

将编写的源代码复制到Linux相应目录当中。
在目录的Kconfig文件当中增加关于新源代码对应项目的编译配置选项。
在目录的Makefile文件中增加对新源代码的编译条目

引用实例:
用简单的实例建立初步的认识:
...
在drivers/char/目录下有ttyprink文件,则在当前的Kconfig下存在如下的配置文件,
conf ig TTY_PRINTK
tristate "TTY driver to output user messages via printk"
depends on EXPERT && TTY
default n
---help---
If you say Y here, the support for writing user messages (i.e.
console messages) via printk is available.
The feature is useful to inline user messages with kernel
messages.
In order to use this feature, you should output user messages
to /dev/ttyprintk or redirect console to this TTY.
If unsure, say N.

在目录中的Makefile关于TTY_PRINTK的编译项为:
obj-$(CONFIG_TTY_PRINTK) +=ttyprintk.o

一般而言,驱动开发者会在内核源码的drivers目录内的相应子目录中增加新设备驱动的源代码或者在
/arch/arm/mach-xxx 下增加板级支持的代码。同时增加或修改Kconfig配置脚本和Makefile脚本。


Makefile
内核源代码各级子目录中的kbuild Makefile进行简单介绍。
目标定义
目标定义就是用来定义哪些内容要作为模块编译,哪些药编译并链接进内核
obj-y +=foo.o
表示要由foo.c或者foo.s文件编译得到foo.o并且链接进内核。是无条件编译,而obj-m 表示该文件
要作为模块编译。obj-n形式的目标不会被编译。
更常见的做法是根据make menuconfig后生成config文件的CONFIG_ 变量来决定文件的编译方式,如
obj-$(CONF iG_ISDN) += isdn.o
obj-$(CONF iG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
除了具有obj-形式的目标以外,还有lib-y library库,hostprogs-y主机程序等目标,但是这两类解基
本都应用在特定的目录和场合之中。

多文件模块的定义
最简单的Makefile仅需一行代码就够了。如果模块由多个文件组成,会稍微复杂一些
#
# Makef ile for the linux ext2-f ilesystem routines.
#
obj-$(CONF iG_EXT2_FS) += ext2.o
ext2-y := balloc.o dir.o f ile.o fsync.o ialloc.o inode.o \
ioctl.o namei.o super.o symlink.o
ext2-$(CONF iG_EXT2_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o
ext2-$(CONF iG_EXT2_FS_POSIX_ACL) += acl.o
ext2-$(CONF iG_EXT2_FS_SECURITY) += xattr_security.o
ext2-$(CONF iG_EXT2_FS_XIP) += xip.o

模块的名字为ext2,由balloc.o、dir.o、file.o等多个目标文件最终

目录层次的迭代
obj-$(CONFIG_EXT2_FS) += ext2/
当CONFIG_EXT2_FS 的值为y或m时,kbuild将会把ext2目录列入向下迭代的目录当中。

配置选项
config MODVERSIONS
bool "Module versioning support"
help
...
每个配置选项都必须指定类型,类型包括bool,tristate,string,hex和inttristate和string是两
种基本的类型。其他类型都基于这两种类型。
等价脚本:
bool "Networking support"
等价于:
bool
prompt "Networking support"
依赖关系的格式为:
depend on (或者 requires ) <expr>

config MODULES
bool "Enable loadable module support"
config MODVERSION
bool “Set Version information on all module symbols”
depends on MODULES
comment "module support disable"
depend on !MODULES


先学习到这里,爱你,YZ
CGAL的编译与配置 CGAL的编译与配置 网上已经有一些配置的步骤,但是在具体配置过程中,发现有很多问题,折腾了两天后终于配置成功,在此做更详细的记录。 准备 CGAL:CGAL4.7和CGAL4.9的库,分别编译成功了; BOOST:boost1.59的版本 Cmake:2.8.11.2 win32 x86 均可在官网下载 编译boost CGAL基于boost库,因此先编译boost库。 1.下载完boost库,... 阅读详情

相关推荐

编译配置过程

它涉及到设置编译器、链接器和其他构建工具的参数,以及确保所需的库和依赖项可用。首先,您需要选择合适的编译器和构建工具。根据不同的编程语言和开发环境,具体的配置步骤可能会有所差异。关于编译配置的更多细节和选项,请参考所使用的编译器和构建工具的文档。构建成功后,您可以在指定的输出目录中找到生成的可执行程序。根据您的操作系统和构建配置,可执行程序的名称和位置可能会有所不同。这些文件描述了构建过程中的源文件、目标文件和依赖关系。配置完成后,您可以使用构建工具来构建项目。如果您有任何进一步的问题,请随时提问。

cl6789的博客 235

c/c++编译器配置(交叉编译重要参数)、交叉编译动态库与as配置、mk初步

gcc/g++/clang,相当于javac: 了解c/c++编译器的基本使用,能够在后续移植第三方框架进行交叉编译时,清楚的了解应该传递什么参数。 clang: clang 是一个C、C++、Object-C的轻量级编译器。基于LLVM(LLVM是以C++编写而成的构架编译器的框架系统,可以说是一个用于开发编译器相关的库) gcc: GNU C编译器。原本只能处理C语言,很快...

weixin_30788239的博客 675

Linux系统下使用VScode进行编译的相关配置(包括opencv库,eigen库,glog库,boost库)

Linux系统下使用VScode进行编译的相关配置 首先进行VMware Ubuntu的安装,详细过程可见如下链接:VMware Ubuntu安装详细过程(新) 创建好虚拟机之后进行vscode的下载与安装,去到vscode官网进行vscode安装包的下载,要注意的是在linux系统下安装vscode需要下载的是deb文件: 将下载的deb文件放在桌面上,双击可弹出以下界面: 点击安装,等待安装完毕。首次安装好是英文,按快捷键 ctrl + shift + p可调出搜索框,输入Configure Dis

摸鱼中...... 6695

vs code 配置C/C++多文件编译调试(linux&windows)

前言 众所周知,vs code是21世纪最好用的编辑器,没有之一(我说的)。我们可以用它来玩我们的小霸王游戏,甚至于,你还可以用它来写代码! 那么本篇文章就来说说如何用VS Code来配置C/C++多文件调试,这里虽然用的windows下作为例子,但也可以作为在linux环境下的参考。 准备工作 那么我们怎么来配置多文件编译调试呢?接下来进入正题,假设我们已经安装好了C/C++的编译环境,并且也在vscode上安装好了对应的插件(C/C++插件),这时候我们打开VScode,打开一个工程文件夹(或者

hzf978742221的博客 2万+

掌握TypeScript编译选项与配置技巧

本文深入探讨了TypeScript中`tsconfig.json`配置文件的使用技巧。我们详细分析了如何通过`tsconfig.json`中的不同编译选项控制编译过程,包括列出编译文件、选择特定文件进行编译、排除不需要的文件,以及如何继承配置以提高项目配置的可维护性。同时,我们也讨论了如何使用`--showConfig`编译选项来调试和查看当前编译工程时使用的所有配置。

weixin_35706067的博客 870

Windows显卡TDR超时导致Unity崩溃?手把手教你修改注册表延长响应时间

本文详细解析了Windows显卡TDR超时导致Unity崩溃的问题,并提供了修改注册表延长响应时间的完整解决方案。通过调整TdrDelay和TdrDdiDelay键值,开发者可以有效避免D3D11设备丢失错误,提升Unity编辑器的稳定性。文章还包含显卡驱动优化、系统性能调优等实用技巧,帮助开发者彻底解决编辑器崩溃问题。

weixin_33737774的博客 621

Linux内核编译与加载

Linux内核编译与加载 内核目录结构 目录 说明 arch 硬件体系结构代码,每种平台占用一个目录,如I386、arm、mips。板级支持代码 block 块设备驱动程序IO调度 crypto 常用加密散列算法、校验算法 documentation 内核说明文档 drivers 设备驱动程序,各驱动类型占用一个目录,如char、block、net、mtd、i2c等 fs 支持的文件系统,如EXT、FAT、NTFS、JFFS2 include 头文件,系统相关头文

方大锤 796

智能汽车域控制器FOTA升级方案探讨

上文提到的Entry属性,包括Active 属性, Bootable 属性, Successful 属性, Retrycnt 属性 ,Active 属性用于标志槽的优先级,bootloader优先选择Active 属性=1的槽启动,Bootable 属性标志槽可否可启动,Successful 属性标志槽是否成功启动过,Retrycnt 属性标志槽可尝试启动的次数。芯片启动后,首先进入Bootloader阶段,此阶段将读取存储系统的分区属性,根据属性值进行逻辑判断,并确定进入哪个分区,详见流程图。

huibian1234的博客 1570

qt creater 编译器的配置

qt creater 编译器的配置

xie__jin__cheng的博客 1万+

从零开始利用MATLAB进行FPGA设计(六)用ADC采集信号教程1

用AN9238采集信号的方法(1),包含PLL、FIFO、ILA的基础教程。

WZT725的博客 3094

使用Xpath语法爬取豆瓣读书Top250

使用Xpath语法爬取豆瓣读书Top250 使用的软件是Spyder 网页地址:https://book.douban.com/top250?start=0 直接上代码: # -*- coding: utf-8 -*- """ Created on Thu Apr 30 18:35:17 2020 @author: ASUS """ import requests import csv fr...

weixin_43987253的博客 2081

AndroidStudio编译配置

AndroidStudio编译配置1、概述2、命令行编译2.1 查看可编译目标2.2 编译debug版本apk3、配置自动签名3.1 配置签名3.2 编译release版本4、自定义编译变体4.1 Build types4.2 Product flavors4.21 概述4.2.2 多个风味产品和风味盒结合**4.3 过滤变体4.4 创建资源集4.5 修改默认资源集4.6 编译资源集4.7 声明依赖5、增加编译依赖6、配置签名设置 1、概述 AndroidStudio的编译系统编译app的资源文件和代码,打

卓越之路 4294

[QMT量化交易小白入门]-105、震荡市最适合的策略:ETF多标的动态网格策略,回测年化收益47.81%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 2061

uboot——配置编译

什么是uboot? uboot的作用 如何学习

Burning Water 997

STM32入门教程:WiFi通信

第四步:初始化串口 在生成的代码中,您可以找到一个名为 "USARTx_Init" 的函数,其中 "x" 是您选择的串口号。然后,我们使用 "AT+CIPSEND" 命令发送UDP数据,接收到服务器的回复,并在终端上显示收到的数据。在配置向导中,您可以选择启用USART串口功能,并根据您的硬件连接,将串口设置为与WiFi模块连接的串口。在上述代码中,我们使用了 "HAL_UART_Receive" 函数来接收串口数据,并使用 printf 来在终端上显示收到的数据。如果有任何问题,请随时向我提问。

2401_85258012的博客 1073

TIA博途选型工具Selection Tool的基本使用方法介绍

TIA博途选型工具Selection Tool的基本使用方法介绍

Robot_PLC_HMI_Automation 4209

TensorFlowCXX编译与配置

TensorFlowCXX编译与配置 一、所需软件工具 1.CMake version 3.5以上 2.git (http://git-scm.com) 3.swig (http://www.swig.org/download.html)解压即可 4.Visual Studio 2015 5.UCDA9.0 (https://developer.nvidia.com...

计算机图形学与深度学习 1673

Wi-Fi QoS中AIFSN/CWmin/CWmax/TxOP参数是怎样计算的?

802.11e/WMM的EDCA机制通过AIFS、CWmin/CWmax和TxOP三组参数实现业务优先级控制。AIFS决定最短等待时间(AIFS=SIFS+AIFSN×SlotTime),CWmin/CWmax定义退避范围(2^ECW-1),TxOP设置最大占用时长(32µs单位)。默认配置中,语音业务(VO)优先级最高,其AIFSN最小(2)、CW范围最小(3-7)、TxOP适中(1.504ms);视频(VI)次之;普通数据(BE)和后台(BK)优先级最低。调优需根据网络特性调整参数:VoIP可降低AIF

1042484520@qq.com(邮箱) 1744

android编译配置,Android Studio配置编译概览

简要介绍Android Studio 使用高级编译工具包Gradle来自动执行和管理编译流程,同时也允许您定义灵活的自定义编译配置。每个编译配置均可定义自己的一组代码和资源,同时重用所有应用版本共用的部分。Android Plugin for Gradle 与该编译工具包一起使用,共同提供专用于编译和测试 Android 应用的流程和可配置设置。编译流程编译流程典型 Android 应用模块的编译...

weixin_32308019的博客 925

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

linux内核的配置与编译,linux内核配置与编译

一、linux内核配置linux内核配置有两种方式:make config:是基于文本模式的交互式配置make menuconfig:基于文本模式的菜单型配置一般都会使用基于文本模式的菜单型配置来配置内核1.1、主要需要配置的几个选项处理器类型和特点的配置(processor type and features)网络配置(networking support)设备驱动配置(device drive...

weixin_39632327的博客 549

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Linux内核配置和编译详解

  版权声明:本文章参考了《Linux内核官方文档》。未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!! 1 内核配置及编译 1.1 配置内核 $make mrproper——该命令确保目录下没有相关的文件和配置,如果已经编译过linux内核,建议使用该命令   每个选项要么是二选一yes或no,要么是三选一yes、no、modul...

liao20081228的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

linux内核的配置与编译

linux内核的配置与编译(基于linux2.38) 步骤: 一、清除临时文件、中间文件和配置文件(命令可选) make clean:删除产生的文件,但是保留配置文件 make mrproper:删除产生的文件 + 保留配置文件 make distclean:mrproper + 补丁和IDE留下的文件(比较干净) 二、确定目标系统的软硬件配置情况:如:CPU、网卡型号、网络协议等 三、使用如...

qq_41782149的博客 304

关于qt编译安装的配置

关于qt编译安装的配置

xie__jin__cheng的博客 1617

nginx 编译安装与配置

nginx源码编译的安装和配置,适合于多种linux操作系统

老树的技术博客 2648

配置与编译linux,linux内核配置与编译(图文)

linux内核配置与编译(图文) (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.90 积分Linux 内核配置与编译实践截图演示1. 选择一个内核版本,进行解压,这里我选择的是最新的内核3.0。命令:tar -xvf linux-3.0 .tar.gz -C /home/local/xx/2. 清除已编译或配置文件:命令:make diatc...

weixin_34413579的博客 191

madplay配置以及编译

如何在PC虚拟机中制作一个mp3 player。 需要准备的库文件有zlib-1.2.3.tar.gz,libid3tag-0.15.1b.tar.gz,libmad-0.15.1b.tar.gz,madplay-0.15.2b.tar.gz, alsa-lib-1.0.26 zlib-1.2.3.tar.tar用于文件的压缩和解压 libid3tag-0.15.1b.tar.g

shexujia的专栏 4121
上一篇: 内核的结构
下一篇: 编译目录
maclinuxye
博客等级 码龄11年 10粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值