如何编译Linux内核

编译内核详解 编译内核详解前提准备开发环境获取目标主机上硬件设备的相关信息1、cpu2、内存3、PCI 设备简单的内核编译过程(以CentOS 7为例)首先需要下载内核源代码包,进行解压操作需要继续在 /usr/src/linux 目录下进行执行以下步骤重启系统,选择新内核内核配置选项的存放位置内核编译过程的详细说明1、配置内核选项2、编译多线程编译编译内核中的一部分代码如何交叉编译3、 如何在执行过编译操作的... 阅读详情

分类: Unix/Linux 9789人阅读 评论(4) 收藏 举报

内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。本文将以RedHat Linux 6.0(kernel 2.2.5)为操作系统平台,介绍在Linux上进行内核编译的方法。 

  一、 下载新内核的源代码 

  目前,在Internet上提供Linux源代码的站点有很多,读者可以选择一个速度较快的站点下载。笔者是从站点www.kernelnotes.org上下载了Linux的最新开发版内核2.3.14的源代码,全部代码被压缩到一个名叫Linux-2.3.14.tar.gz的文件中。 

  二、 释放内核源代码 

  由于源代码放在一个压缩文件中,因此在配置内核之前,要先将源代码释放到指定的目录下。首先以root帐号登录,然后进入/usr/src子目录。如果用户在安装Linux时,安装了内核的源代码,则会发现一个linux-2.2.5的子目录。该目录下存放着内核2.2.5的源代码。此外,还会发现一个指向该目录的链接linux。删除该连接,然后将新内核的源文件拷贝到/usr/src目录中。 

  (一)、用tar命令释放内核源代码 

  # cd /usr/src 

  # tar zxvf Linux-2.3.14.tar.gz 

  文件释放成功后,在/usr/src目录下会生成一个linux子目录。其中包含了内核2.3.14的全部源代码。 

  (二)、将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。 

  # cd /usr/include 

  # rm -Rf asm linux 

  # ln -s /usr/src/linux/include/asm-i386 asm 

  # ln -s /usr/src/linux/include/linux linux 

  # ln -s /usr/src/linux/include/scsi scsi 

  (三)、删除源代码目录中残留的.o文件和其它从属文件。 

  # cd /usr/src/linux 

  # make mrproper 

  三、 配置内核 

  (一)、启动内核配置程序。 

  # cd /usr/src/linux 

  # make config 

  除了上面的命令,用户还可以使用make menuconfig命令启动一个菜单模式的配置界面。如果用户安装了X window系统,还可以执行make xconfig命令启动X window下的内核配置程序。 

  (二)、配置内核 

  Linux的内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。由于内核的配置选项非常多,本文只介绍一些比较重要的选项。 

  1、Code maturity level options(代码成熟度选项) 

  Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?] 如果用户想要使用还处于测试阶段的代码或驱动,可以选择“y”。如果想编译出一个稳定的内核,则要选择“n”。 

  1、 Processor type and features(处理器类型和特色) 

  (1)、Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) [PPro/6x86MX] 选择处理器类型,缺省为Ppro/6x86MX。 

  (2)、Maximum Physical Memory (1GB, 2GB) [1GB] 内核支持的最大内存数,缺省为1G。 

  (3)、Math emulation (CONFIG_MATH_EMULATION) [N/y/?] 协处理器仿真,缺省为不仿真。 

  (4)、MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?] 

  选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。 

  (5)、Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] 选择“y”,内核将支持对称多处理器。 

  2、 Loadable module support(可加载模块支持) 

  (1)、Enable loadable module support (CONFIG_MODULES) [Y/n/?] 选择“y”,内核将支持加载模块。 

  (2)、Kernel module loader (CONFIG_KMOD) [N/y/?] 选择“y”,内核将自动加载那些可加载模块,否则需要用户手工加载。 

  3、 General setup(一般设置) 

  (1)、Networking support (CONFIG_NET) [Y/n/?] 该选项设置是否在内核中提供网络支持。 

  (2)、PCI support (CONFIG_PCI) [Y/n/?] 该选项设置是否在内核中提供PCI支持。 

  (3)、PCI access mode (BIOS, Direct, Any) [Any] 该选项设置Linux探测PCI设备的方式。选择“BIOS”,Linux将使用BIOS;选择“Direct”,Linux将不通过BIOS;选择“Any”,Linux将直接探测PCI设备,如果失败,再使用BIOS。 

  (4)Parallel port support (CONFIG_PARPORT) [N/y/m/?] 选择“y”,内核将支持平行口。 

  4、 Plug and Play configuration(即插即用设备支持) 

  (1)、Plug and Play support (CONFIG_PNP) [Y/m/n/?] 选择“y”,内核将自动配置即插即用设备。 

  (2)、ISA Plug and Play support (CONFIG_ISAPNP) [Y/m/n/?] 选择“y”,内核将自动配置基于ISA总线的即插即用设备。 

  5、 Block devices(块设备) 

  (1)、Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/m/n/?] 选择“y”,内核将提供对软盘的支持。 

  (2)、Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) [Y/m/n/?] 选择“y”,内核将提供对增强IDE硬盘、CDROM和磁带机的支持。 

  6、 Networking options(网络选项) 

  (1)、Packet socket (CONFIG_PACKET) [Y/m/n/?] 选择“y”,一些应用程序将使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。 

  (2)、Network firewalls (CONFIG_FIREWALL) [N/y/?] 选择“y”,内核将支持防火墙。 

  (3)、TCP/IP networking (CONFIG_INET) [Y/n/?] 选择“y”,内核将支持TCP/IP协议。 

  (4)The IPX protocol (CONFIG_IPX) [N/y/m/?] 选择“y”,内核将支持IPX协议。 

  (5)、Appletalk DDP (CONFIG_ATALK) [N/y/m/?] 选择“y”,内核将支持Appletalk DDP协议。 

  8、SCSI support(SCSI支持) 

  如果用户要使用SCSI设备,可配置相应选项。 

  9、Network device support(网络设备支持) 

  Network device support (CONFIG_NETDEVICES) [Y/n/?] 选择“y”,内核将提供对网络驱动程序的支持。 

  10、Ethernet (10 or 100Mbit)(10M或100M以太网) 

  在该项设置中,系统提供了许多网卡驱动程序,用户只要选择自己的网卡驱动就可以了。此外,用户还可以根据需要,在内核中加入对FDDI、PPP、SLIP和无线LAN(Wireless LAN)的支持。 

  11、Character devices(字符设备) 

  (1)、Virtual terminal (CONFIG_VT) [Y/n/?] 选择“y”,内核将支持虚拟终端。 

  (2)、Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?] 

  选择“y”,内核可将一个虚拟终端用作系统控制台。 

  (3)、Standard/generic (dumb) serial support (CONFIG_SERIAL) [Y/m/n/?] 

  选择“y”,内核将支持串行口。 

  (4)、Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?] 

  选择“y”,内核可将一个串行口用作系统控制台。 

  12、Mice(鼠标) 

  PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?] 如果用户使用的是PS/2鼠标,则该选项应该选择“y”。 

  13、Filesystems(文件系统) 

  (1)、Quota support (CONFIG_QUOTA) [N/y/?] 选择“y”,内核将支持磁盘限额。 

  (2)、Kernel automounter support (CONFIG_AUTOFS_FS) [Y/m/n/?] 选择“y”,内核将提供对automounter的支持,使系统在启动时自动 mount远程文件系统。 

  (3)、DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?] 选择“y”,内核将支持DOS FAT文件系统。 

  (4)、ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) [Y/m/n/?] 

  选择“y”,内核将支持ISO 9660 CDROM文件系统。 

  (5)、NTFS filesystem support (read only) (CONFIG_NTFS_FS) [N/y/m/?] 

  选择“y”,用户就可以以只读方式访问NTFS文件系统。 

  (6)、/proc filesystem support (CONFIG_PROC_FS) [Y/n/?] /proc是存放Linux系统运行状态的虚拟文件系统,该项必须选择“y”。 

  (7)、Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?] EXT2是Linux的标准文件系统,该项也必须选择“y”。 

  14、Network File Systems(网络文件系统) 

  (1)、NFS filesystem support (CONFIG_NFS_FS) [Y/m/n/?] 选择“y”,内核将支持NFS文件系统。 

  (2)、SMB filesystem support (to mount WfW shares etc.) (CONFIG_SMB_FS) 

  选择“y”,内核将支持SMB文件系统。 

  (3)、NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS) 

  选择“y”,内核将支持NCP文件系统。 

  15、Partition Types(分区类型) 

  该选项支持一些不太常用的分区类型,用户如果需要,在相应的选项上选择“y”即可。 

  16、Console drivers(控制台驱动) 

  VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?] 选择“y”,用户就可以在标准的VGA显示方式下使用Linux了。 

  17、Sound(声音) 

  Sound card support (CONFIG_SOUND) [N/y/m/?] 选择“y”,内核就可提供对声卡的支持。 

  18、Kernel hacking(内核监视) 

  Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] 选择“y”,用户就可以对系统进行部分控制。一般情况下选择“n”。 

  四、 编译内核 

  (一)、建立编译时所需的从属文件 

  # cd /usr/src/linux 

  # make dep 

  (二)、清除内核编译的目标文件 

  # make clean 

  (三)、编译内核 

  # make zImage 

  内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件zImage。如果编译的内核很大的话,系统会提示你使用make bzImage命令来编译。这时,编译程序就会生成一个名叫bzImage的内核映像文件。 

  (四)、编译可加载模块 

  如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。 

  # make modules 

  # make modelus_install 

  编译成功后,系统会在/lib/modules目录下生成一个2.3.14子目录,里面存放着新内核的所有可加载模块。 

  五、 启动新内核 

  (一)、将新内核和System.map文件拷贝到/boot目录下 

  # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.3.14 

  # cp /usr/src/linux/System.map /boot/System.map-2.3.14 

  # cd /boot 

  # rm -f System.map 

  # ln -s System.map-2.3.14 System.map 

  (二)、配置/etc/lilo.conf文件。在该文件中加入下面几行: 

  default=linux-2.3.14 

  image=/boot/vmlinuz-2.3.14 

  label=linux-2.3.14 

  root=/dev/hda1 

  read-only 

  (三)、使新配置生效 

  # /sbin/lilo 

  (四)、重新启动系统 

  # /sbin/reboot 

  新内核如果不能正常启动,用户可以在LILO:提示符下启动旧内核。然后查出故障原因,重新编译新内核即可。


编译安卓内核教程(2023,6,13) 2023六月最新构建安卓内核的教程,简单粗暴,无脑复制黏贴即可。 阅读详情

相关推荐

Linux入门攻坚——17、Linux内核编译及系统安装

从http服务器上看,已经读取了repo文件,解析出问题了,这里的http内容是将光盘ISO解压后的内容,这个问题可能是源的问题,是不是repodata下的文件需要重新生成?此问题不知道解决方法,留待以后吧。鸡与蛋的问题:anaconda的运行是基于内核的,即需要在内核支持下运行,但是安装CentOS之前,是没有内核的。已经是自己制作的引导光盘了。按ESC键,命令行输入:linux ks=cdrom:///myks1.cfg,就可以按光盘上的ks文件执行安装,但是在repo时,同样出现了错误。

kaoa000的专栏——非淡泊无以明志,非宁静无以致远 2277

Linux内核编译

下面简单介绍一下Linux内核编译过程。(附注:本博客所讲的内容是在Ubuntu上进行操作的,Cent OS并未验证) 1、下载内核源码,可以到kernel.org上进行下载。 2、解压内核源文件(注意:要先使用cd命令进入压缩包所在目录),可以使用如下命令: tar -xvf 压缩包名称 3、进入解压后的文件夹: 如下图: 4、配置内核: 使用 make menuconf......

ibless的博客 4万+

linux内核编译

前言 Linux内核是Linux操作系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性。内核主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等。Linux内核是单内核设计,但却采用了微内核的模块化设计,支持内核线程以及动态装载内核模块的能力。 Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统定制一个更高效、更稳定的内核,就需要手动编译Linux内核。那么如

manongxianfeng的博客 7415

linux 内核编译

本文介绍了Linux内核编译的详细步骤,包括环境准备、配置选项、编译过程及安装方法,是学习和实践内核编译的指南。

mx_jun的博客 9557

LINUX——内核移植、内核编译教程

Linux内核编译是一个将内核源代码转换成可在特定硬件架构上运行的二进制文件的过程。这些命令提供了一个图形界面来配置内核选项,配置完毕后,退出并保存。如果下载失败,需要检查网络配置问题,如通过ping ubuntu的地址查看是否可以连接上;10、bootm 0x30008000 启动这个地址处的代码,即拷贝过去的内核代码;所以,我们需要将入口地址向后偏移64字节,即偏移到:0x30008040处。解压完成后会生成一个文件夹,后续有些操作就在该文件夹顶层操作。:如果下载的是压缩包,使用。

m0_63247632的博客 1984

CCS安装教程图解说明:可视化步骤快速上手

通过清晰的图解步骤详解CCS安装过程,帮助新手快速掌握环境搭建。结合ccs安装教程与实际操作界面,每一步都直观易懂,大幅降低学习门槛,提升配置效率。

weixin_42611310的博客 963

Linux内核及内核编译

使用make menuconfig时,配置工具首先分析与体系结构对应的/arch/xxx/Kconfig文件,xxx为传入的ARCH参数,/arch/xxx/Kconfig文件中除本身包含一些与体系结构相关的配置项和配置菜单外,还通过source语句引入一系列Kconfig文件。如果需要几个并发执行的任务,可以启动内核线程,这些线程没有用户空间。内核空间和用户空间用来区分程序执行的两种不同的状态,他们使用不同的地址空间,Linux中只能通过系统调用和硬件中断完成从用户空间到内核空间的控制转移。

weixin_45241469的博客 4590

RTAB-map:实时高效的SLAM库

Real‐time appearance‐based mapping (RTAB‐Map)是一种基于外观的闭环检测方法,具有良好的内存管理,以满足处理大场景和在线长周期管理要求。RTAB‐Map集成了视觉和激光雷达SLAM方案,并支持目前绝大多数的传感器 是一个强大的、开源的Simultaneous Localization and Mapping(SLAM)库,专为机器人和无人驾驶领域设计。它提供了一套完整的解决方案,用于构建三维地图,并在未知环境中进行实时定位与导航。 github项目地址 RTAB-

weixin_45761399的博客 1万+

Linux内核编译很简单,6步编译一个自己的内核

考虑离开在前面文章中我们反复提到过Linux内核,知道Linux内核才是Linux操作系统最为核心的内容。内核实现了对硬件的管理,为应用软件提供了使用硬件的接口。 对于Linux开发人员而言,内核的学习和开发才是终极目标。因此我们今天先介绍一下内核的编译。 需要知道的是,Linux内核的编译和安装并非想象的那么难,那么复杂,其实只需要几条命令就可以搞定。 本文,我们将一步一步地介绍如何从源代码编译和安装一个Linux内核。需要注意的是本指导基于Ubuntu 18.04版本编译安装,其它发行版可能会有差

资料qun832218493 3万+

NX/UG二次开发—CAM—设置程序修剪边界Boundary

最近做了一个设置CAM程序边界的小工具,分享一下经验(官方的代码在文章末尾处),以下均以修剪边界曲线为例。 以下为官方提供的源码: /***************************** Include Files **********************************/ #include <stdlib.h> #include <uf.h> #include <uf_obj.h> #include <uf_object_type

门前大桥下,游过一群鸭,快来看一看,原来是C++ 3740

别再乱刷了!《另一个伊甸》异节、改典、典录获取途径完全梳理,这些隐藏奖励你拿全了吗?

本文全面解析《另一个伊甸》中异节、改典、典录的获取途径,包括断章、外传、精灵试炼等高概率掉落副本,以及隐藏任务、限时活动和特殊挑战。提供高效收集策略和优先级建议,帮助玩家快速获取这些稀缺资源,实现角色真证和上限突破。

weixin_42699679的博客 596

linux内核编译详解

前言Linux内核是Linux操作系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性。内核主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等。Linux内核是单内核设计,但却采用了微内核的模块化设计,支持内核线程以及动态装载内核模块的能力。Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果...

Hello,World 1万+

数学建模更新10(蒙特卡罗模拟)

蒙特卡罗模拟一.目录二.引例1:布丰投针实验1.投针步骤2.思路3. 历史实验者二.蒙特卡罗模拟概述1.定义2.提出3.原理4.讨论三.应用实例1.三门问题【1】问题【2】代码2.模拟排队问题【1】题目【2】引入参数【3】总结题目信息【4】过程可视化【5】一些推导公式【6】代码3.有约束的非线性规划问题【1】问题的分类【2】例子【3】推导过程【4】代码 一.目录 二.引例1:布丰投针实验 1.投针步骤 步骤: 1:取一张白纸,在上面画出许多条间距为a的平行线 2:去一根长度为l的针,随机的向纸张上投掷n次

沉晨尘宸的博客 3043

【Linux内核】如何编译并运行一个Linux内核

编译并运行一个Linux内核。

theaipower的博客 1万+

有限元分析必看:如何用ANSYS检查关键区域的网格质量(附操作截图)

本文聚焦有限元分析中决定仿真精度的关键环节,详细讲解了如何利用ANSYS Workbench对关键区域进行网格质量检查与优化。文章提供了从思维转变、实战操作到指标解读的完整流程,强调通过命名选择、Worksheet过滤器等工具实现定向检查,并给出了针对结构分析的关键区域网格质量阈值建议,帮助工程师提升仿真结果的可靠性与效率。

weixin_29200741的博客 467

VCAST创建单元测试工程

选择工作目录,后面创建胡UT工程将会生成到这个目录。

qq_42851449的博客 2485

[OS] 编译 Linux 内核

这些工具的安装是内核编译的基础,因为内核编译涉及到大量复杂的配置和依赖,少了其中任何一个都会导致编译失败。在进行内核模块的加载和测试时,我们还需要构建内核对象。在重启过程中,你需要在引导菜单中选择新编译的内核版本,以确保加载我们新加入的 Kthreads 模块。内核源代码较大,编译过程需要大量的磁盘空间,建议将源代码移动到有足够空间的目录下再继续编译。这个步骤的目的是使用现有内核的配置,确保我们在编译过程中不会遗漏关键的选项。在构建内核对象之后,我们需要将其插入内核进行测试,并在不需要时将其移除。

m0_74331272的博客 1920

人工智能在文学领域的应用:创作无限可能的智能作家

人工智能在文学领域的应用:创作无限可能的智能作家 作者:禅与计算机程序设计艺术 1. 背景介绍 人工智能技术近年来飞速发展,在各个领域都有广泛应用。文学创作作为人类最高级的智力活动之一,也逐渐受到人工智能技术的影响和改变。随着自然语言处理、生成式模型等人工智能

AI天才研究院 1110

Linux 内核编译

本文介绍了Linux内核源码树的目录结构及编译方法。源码树顶层包含arch(架构相关)、drivers(驱动)、fs(文件系统)等核心目录,每个目录有特定功能模块。编译前需安装gcc等工具,通过make menuconfig配置内核选项,建议使用-j参数多核加速编译。编译过程可控制输出信息量,结果生成bzImage内核镜像和System.map符号表等文件。最后给出了从获取源码到安装的完整流程示例,包括内核配置、编译优化和常见问题处理技巧。

onlymscn的博客 1188

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

编译安装Linux内核

Linux内核组成部分: kernel object:内核对象,一般放置于 辅助文件:ramdisk 1.1 内核版本 运行中的内核:uname命令:打印系统信息常用选项: 1.2 内核模块命令 lsmod命令:显示Linux内核中模块的状态,显示的内容来自于: /proc/modules文件modinfo命令:显示有关Linux内核模块的信息功能:管理内核模块配置文件:/etc/modprobe.conf, /etc/modprobe.d/*.conf常用选项: modprobe命令:在Lin

一直在努力学习的菜鸟 1640

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linux学习之内核编译

Linux内核编译 make mrproper

RongLin02的博客 4651

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Linux】Linux内核编译与入门

linux内核编译与入门

DevFrank的博客 3752

编译Linux内核实验

编译Linux内核 1. 实验目的 (1)学习配置虚拟机环境,安装配置虚拟机操作系统 (2)学习编译Linux系统内核的过程及相关问题,编译Linux内核 (3)了解GRUB启动程序,修改系统中grub2启动配置 2. 实验内容 (1)安装虚拟机并配置环境 (2)下载Linux内核 (3)编译内核配置 (4)编译内核 (5)修改引导菜单 3. 实验环境 本实验基于Ubuntu虚拟机完成,具体实验环...

PatrickYangyz的博客 4996
上一篇: 文件描述符及其作用
下一篇: 如何在Android平台下编译带STL的C++程序
yaotinging
博客等级 码龄18年 7粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值