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

网站怎么做mip技术互联网推广广告

网站怎么做mip技术,互联网推广广告,vue做网站好吗,用凡科帮别人做网站源码配置编译 源码配置编译,要把中间各个环节都理清楚 厂商把自己增加的东西专门放了个文件独立,方便开发者发现变化 1.菜单配置 移植的第一步,就是选配,通过make menuconfig图形化界面选配 //载入配置 $ make ARCHarm64 tegra_defconfi…

源码配置编译

源码配置编译,要把中间各个环节都理清楚

厂商把自己增加的东西专门放了个文件独立,方便开发者发现变化

1.菜单配置

移植的第一步,就是选配,通过make menuconfig图形化界面选配

//载入配置
$ make ARCH=arm64 tegra_defconfig  //导入官方配置//会从arch/arm64/configs下 查找tegra_defconfig,导入到当前目录,重命名为.config)
$ make menuconfig //在官方配置基础上进行配置//从零配置
$ mv  .config .config.ago //如有,则改名 -> 清除当前配置(.config)
$ make  menuconfig ARCH=arm64 /*生成最初始配置界面(如不指定ARCH,默认的是x86的)当前目录有.config则导入,如无则用默认x86配置生成.config*///保存配置
$ make savedefconfig //生成defconfig  (相比make  menuconfig 里的Save保存的配置,这是最简的)
$ cp defconfig arch/arm64/configs/my_defconfig //发布配置(原厂发布配置到内核就是该方式)

1.1载入配置

//载入配置
$ make ARCH=arm64 tegra_defconfig  //导入官方配置//会从arch/arm64/configs下 查找tegra_defconfig,导入到当前目录,重命名为.config)
$ make menuconfig //在官方配置基础上进行配置

1.2从零配置

//从零配置
$ mv  .config .config.ago //如有,则改名 -> 清除当前配置(.config)
$ make  menuconfig ARCH=arm64 /*生成最初始配置界面(如不指定ARCH,默认的是x86的)当前目录有.config则导入,如无则用默认x86配置生成.config*/

ARM64的全新的配置

image-20220911224510091

General setup->Cross-compiler tool prefix 交叉编译工具(可以这里指定,也可以Makefile中改)

Enable loadable module support 模块的支持ko文件

Enable the block layer 块设备支持

Platform selection 平台选择,虽然架构一样,但是不同厂商的芯片也各不同

Bus support 总线支持,例如PCIe等

Kernel Features 内核特性

Boot options 启动选项,可以默认bootargs

Power management options 电源管理

Networking support 网络

Device Drivers 驱动

1.3保存配置

//第一种,make menuconfig生成的.config放到对应目录,比较多无关信息
cd ~/kernel-4.9
cp .config arch/arm64/configs/yhai_defconfig
//第二种保存配置
$ make savedefconfig //生成defconfig  (相比make  menuconfig 里的Save保存的配置,这是最简的)
$ cp defconfig arch/arm64/configs/yhai_defconfig //发布配置(原厂发布配置到内核就是该方式)

2.编译

$ make  /*编译所有常需指定 交叉编译工具链 CROSS_COMPILE(如无默认采用 gcc)
方式一: make  CROSS_COMPILE=aarch64-linux-gnu-   直接指定
方式二: export CROSS_COMPILE=aarch64-linux-gnu-  导出环境变量*/
$ make  all
$ make Image //只编译内核
$ make modules //只编译模块
$ make dtbs //只编译设备树$ make install /*安装内核  就是把编译出来的二进制文件,库,配置文件等等放到相应目录下常需指定 安装路径 INSTALL_PATH
方式一: make install INSTALL_PATH=/tftpboot   直接指定
方式二: export INSTALL_PATH=/tftpboot  导出环境变量*/
$ make modules_install /*安装模块常需指定 安装路径 INSTALL_MOD_PATH
方式一:make modules_install INSTALL_MOD_PATH=~/Linux_for_Tegra/rootfs   直接指定
方式二:export INSTALL_MOD_PATH=~/Linux_for_Tegra/rootfs  导出环境变量*/

3.菜单配置的实现

为什么make menuconfig后能生成图形界面

image-20220912134924752

3.1顶层配置

Kconfig 总菜单

source “arch/$SRCARCH/Kconfig” 子菜单

menu “Bus support” 显示的字

menuconfig 可以选的菜单

config 可以选的参数

default 默认选择 显示-*-

bool 只有YN 显示[*]

tristate 三态YNM 显示<>

{//Kconfig
//对应菜单信息 .config - Linux/arm64 4.9.253 Kernel Configuration
mainmenu "Linux/$ARCH $KERNELVERSION Kernel Configuration"config SRCARCHstringoption env="SRCARCH"source "arch/$SRCARCH/Kconfig" //导入子Kconfig}{//arch/arm64/Kconfig
source "init/Kconfig"  //gf  跳转到子配置【这个对应General setup --->】source "kernel/Kconfig.freezer"                                       source "arch/arm64/Kconfig.platforms"     //3.2平台选择                            menu "Bus support"                                                    config PCI                                                            bool "PCI support"help                                                              This feature enables support for PCI bus system. If you say Yhere, the kernel will include drivers and infrastructure code   to support PCI bus devices.   
source "drivers/pci/Kconfig"endmenumenu "Kernel Features"
menu "Boot options"
config CMDLINEstring "Default kernel command string"default ""helpProvide a set of default command-line options at build time byentering them here. As a minimum, you should specify the theroot device (e.g. root=/dev/nfs).source "net/Kconfig"source "drivers/Kconfig" //gf跳转   //3.3驱动配置source "drivers/firmware/Kconfig"}{//init/Kconfigmenu "General setup"  //常规的内核选项安装config CROSS_COMPILEstring "Cross-compiler tool prefix"  //设置交叉编译工具链前缀helpSame as running make CROSS_COMPILE=prefix-' but stored fordefault make runs in this kernel build directory.  You don'tneed to set this unless you want the configured kernel builddirectory to select the cross-compiler automatically.config BLK_DEV_INITRD      //是否支持ramdisk 做引导rootsbool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"}

3.2平台选择

//arch/arm64/Kconfig.platforms	  平台选择
menu "Platform selection"	
config ARCH_TEGRAbool "NVIDIA Tegra SoC Family"select ARCH_HAS_RESET_CONTROLLERselect CLKDEV_LOOKUPselect CLKSRC_MMIOselect CLKSRC_OFselect GENERIC_CLOCKEVENTSselect GPIOLIBselect PINCTRLselect GENERIC_PINCONFselect PMselect PM_GENERIC_DOMAINSselect RESET_CONTROLLERhelpThis enables support for the NVIDIA Tegra SoC family

3.3驱动配置

{//drivers/Kconfig
menu "Device Drivers"source "drivers/base/Kconfig"
source "drivers/net/Kconfig"}

image-20220912141132800

{//drivers/net/Kconfig
menuconfig NETDEVICESdefault y if UMLdepends on NETbool "Network device support"source "drivers/net/ethernet/Kconfig"}

image-20220912141219159

{//drivers/net/ethernet/Kconfig
source "drivers/net/ethernet/realtek/Kconfig"
}

image-20220912141349572

{//drivers/net/ethernet/realtek/Kconfig
config R8169   //对应Makefile里 $(CONFIG_R8169)tristate "Realtek 8169 gigabit ethernet support"depends on PCIselect FW_LOADERselect CRC32select MII---help---Say Y here if you have a Realtek 8169 PCI Gigabit Ethernet adapter.To compile this driver as a module, choose M here: the modulewill be called r8169.  This is recommended.}

image-20220912141446199

3.4当前的配置文件

//Makefile在编译时通过读取.config文件的配置来选择要编译的文件
CONFIG_ARM64=y
CONFIG_MMU=y
CONFIG_CROSS_COMPILE=""
CONFIG_ROOT_NFS=y	
CONFIG_R8169=y
CONFIG_VIDEO_IMX219=y	

3.5配置头文件

//include/generated/autoconf.h	配置头文件(编译后自动生成的 )
//通过该文件,可知当前生效的配置是那些
#define CONFIG_R8169 1     //有线网卡
#define CONFIG_VIDEO_IMX219 1	 //排线摄像头

4.源码编译的实现

image-20220912144604399

image-20220912144637098

make的时候根据时间最新原则以及该最新变过的依赖重新编译生成.o文件,再连接到一起

make clean会把.o文件给删掉,下次再make就会很废时间

Kconfig和Makefile都是成对出现的,从最顶层逐渐往下面的子文件走

4.1顶层管理

//Makefile : 顶层 Makefile,负责总体内核的编译链接ARCH      ?= $(SUBARCH)  //指定arch(如传参 make  ARCH=arm64),如不指定默认x86//为避免重复输入,强制写死 如ARCH        ?= arm64
CROSS_COMPILE  ?= $(CONFIG_CROSS_COMPILE:"%"=%) //指定交叉编译工具链//(如传参 make  CROSS_COMPILE=aarch64-linux-gnu-)//强制写死CROSS_COMPILE   ?= aarch64-linux-gnu-LD		= $(CROSS_COMPILE)ld
CC		= $(CROSS_COMPILE)gcc//指定源码子目录
drivers-y   := drivers/ sound/ firmware/
core-y      += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/	srctree := .  //指定源码树顶层目录
objtree := .  //指定目标文件树顶层目录include arch/$(SRCARCH)/Makefile //指定导入 arch的子MakefilePHONY := _all //入口:默认的依赖目标: make时,递归查_all依赖文件,//某文件不存在或有更改(时间最新),则把依赖它的文件都重新编译。
_all: allall: modules //make all时,递归查modules的依赖%config: scripts_basic outputmakefile FORCE   //%通配符,xxconfig就从这里走$(Q)$(MAKE) $(build)=scripts/kconfig $@   //再脚本选择配置入口 如make menuconfigKCONFIG_CONFIG  ?= .config  //读入当前配置文件modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpostdistclean: mrproper    //慎用,它会把你前面的配置,全部清除掉@find $(srctree) $(RCS_FIND_IGNORE) \-o -name '.*.rej' -o -name '*%' help:@echo  'Cleaning targets:'@echo  '$(CROSS_COMPILE)'	 //查看变量CROSS_COMPILE的内容, 	 @表示不显示eho本身

4.2通用规则、脚本

//scripts/kconfig/Makefile	
menuconfig: $(obj)/mconf$< $(silent) $(Kconfig) 		//导入Kconfig ,生成图形界面

4.3体系结构的管理

{//arch/arm64/Makefile:  编译体系结构的子Makefile
//负责本体系结构的相关代码编译 生成内核镜像//指定源码子目录
core-y		+= arch/arm64/kernel/ arch/arm64/mm/
core-$(CONFIG_NET) += arch/arm64/net/    //$(CONFIG_NET)是当配置后,会变为y,或m -> 实现界面配置 那些源码编译或不编译KBUILD_IMAGE	:= Image.gz
KBUILD_DTBS	:= dtbs  all:	$(KBUILD_IMAGE) $(KBUILD_DTBS)  //入口boot := arch/arm64/boot  //指定存放Image 的目录Image: vmlinux  //make Image 的入口,指定编译内核镜像$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@dtbs:    //make dtbs 的入口,指定编译设备树$(Q)$(MAKE) $(build)=$(boot)/dts
}{//arch/arm64/kernel/Makefile# Object file lists. //指定编译的文件(写死的),只需指定.o ,到时会自动找到.c 或.s的文件去编译
arm64-obj-y		:= debug-monitors.o entry.o irq.o fpsimd.o		\entry-fpsimd.o process.o 	
arm64-obj-$(CONFIG_PCI)			+= pci.o  //配置时可改变 $(CONFIG_PCI)的值  -> 实现编译文件的	动态调整	   obj-y					+= $(arm64-obj-y) //添加编进内核的文件
obj-m					+= $(arm64-obj-m) //添加编成模块的文件			   
}

4.4子文件的管理

{//init/Makefile
obj-y                          := main.o version.o mounts.o
obj-$(CONFIG_BLK_DEV_INITRD)   += initramfs.o	
}{//drivers/net/ethernet/realtek/Makefile
obj-$(CONFIG_8139CP) += 8139cp.o
obj-$(CONFIG_8139TOO) += 8139too.o
obj-$(CONFIG_ATP) += atp.o
obj-$(CONFIG_R8169) += r8169.o  //变量$(CONFIG_NET) 由配置时决定 -> 动态决定编译文件}

如果要添加新的驱动,将其编译进内核,如vr_sensor.c文件,放到对应的文件夹下

直接在Makefile中添加obj-y += vr_sensor.o即可,这样最快,可以不用和Kconfig和CONFIG打交道

当然这样添加多了比较混乱

还是在这个文件夹下Kconfig中添加对应config即可,再到顶层make menuconfig也不麻烦

image-20220912201357705

http://www.hkea.cn/news/28158/

相关文章:

  • 可以做网站的公司seo外包
  • 自己怎么做网站视频赚钱5g网络优化培训
  • 数据库修改网站管理员密码seo网站有优化培训吗
  • 福田做商城网站建设找哪家公司好抖音怎么运营和引流
  • 厘米售卡站怎么做网站禁止搜索引擎收录的方法
  • 网站首页滚动图片怎么做谷歌搜索关键词排名
  • 嵩县网站开发友情链接获取的途径有哪些
  • 国家企业信息公示网(广东)海南快速seo排名优化
  • 高端网站设计 上海徐州seo排名公司
  • 泰安网站建设公司排名石家庄最新消息
  • 域名只做邮箱没网站要备案吗常见的网络推广方式包括
  • 昆山建设局网站360搜索首页
  • 正常做网站多少钱无锡网站制作无锡做网站
  • php做网站csdn网站seo公司哪家好
  • 今日头条建站工具何鹏seo
  • wordpress 培训模板优化落实疫情防控新十条
  • 关于做外汇现货的网站太原整站优化排名外包
  • 星悦做任务网站是新网站百度收录
  • 十大营销网站seo关键词查询工具
  • 怎么查询网站所有关键词靠谱的广告联盟
  • 超酷的网站设计磁力搜索引擎
  • 网站建设写程序用什么软件成都疫情最新消息
  • 做网站需要什么资金2022今天刚刚发生地震了
  • 建设网站费用主要包括哪些google商店
  • 专注邯郸建设手机网站贴吧友情链接在哪
  • 网站备案拍照背景志鸿优化网官网
  • 网站百度知道怎么做推广网站搜索引擎优化的方法
  • 网站建设注意哪些问题sem和seo是什么职业岗位
  • 一_建设网站前的市场分析奶茶软文案例300字
  • 做网站智能工具江阴企业网站制作