Linux移植总结--Linux中asm和arch的软链接
@
问题
Linux内核中,.c文件引用.h文件的问题让人困惑:
include <asm/aaa.h>实际用的是asm-arm/aaa.h
include <asm/arch/memory.h>实际用的是include/asm-arm/arch-s3c2410/memory.h
原因
网上查找资料,说是对asm、arch、mach建立了软链接,引用的时候就会跳到指定文件夹。
哪里实现的软链接呢?在Makefile中加warning,make uImage时可以在控制台打印信息。
1、顶层Makefile,使asm链接为asm-arm
include/asm:
@echo ' SYMLINK $@ -> include/asm-$(ARCH)'
$(Q)if [ ! -d include ]; then mkdir -p include; fi;
@ln -fsn asm-$(ARCH) $@
$(warning "@@ the value of ARCH is $(ARCH)")
2、arch/arm/Makefile,使arch链接为arch-s3c2410 ,使mach链接为mach-s3c2410
ifeq ($(incdir-y),)
incdir-y := $(machine-y)
endif
INCDIR := arch-$(incdir-y)
$(warning "@@ the value of arch is $(INCDIR)")
ifneq ($(machine-y),)
MACHINE := arch/arm/mach-$(machine-y)/
else
MACHINE :=
endif
$(warning "@@ the value of MACHINE is $(MACHINE)")
打印如下:
/linux/arch/arm/Makefile:150: "@@ the value of arch is arch-smxx"
/linux/arch/arm/Makefile:157: "@@ the value of MACHINE is arch/arm/mach-smxx/"
Makefile:886: "@@ the value of ARCH is arm"
移植注意
我是建立自己的板子目录才遇到这个问题。
在arch/arm/Makefile中,我定义自己的板子名字:
machine-$(CONFIG_ARCH_SMXX) := smxx (对标:s3c2410)
这样arch = arch-smxx,MACHINE = arch/arm/mach-smxx/
该Makefile文件有这句话:
core-y += $(MACHINE)
就等于
core-y += arch/arm/mach-smxx/
我之前还单独加了句core-y += arch/arm/mach-smxx/,结果就会报
target 'arch/arm/mach-smxx' given more than once in the same rule
Linux移植总结--Linux中asm和arch的软链接的更多相关文章
- Linux移植到自己的开发板(二)UBOOT和Linux
@ 目录 一.uboot跳转到Linux 二. Linux内核启动之解压阶段 三. Linux内核启动之汇编阶段 插曲:关于Kconfig和Makefile 四. Linux内核启动之C语言阶段 五. ...
- linux移植问题汇总(一)
linux移植问题汇总(一) 在此记录移植linux过程中出现的问题以及解决方法. 项目GitHub地址 linux3.0.80:https://github.com/numbqq/linux-3.0 ...
- Linux移植之tag参数列表解析过程分析
在Linux移植之内核启动过程start_kernel函数简析中已经指出了start_kernel函数的调用层次,这篇主要是对具体的tag参数列表进行解析. 1.内存参数ATAG_MEM参数解析 2. ...
- Linux移植之内核启动过程start_kernel函数简析
在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...
- Linux移植之内核启动过程引导阶段分析
在Linux移植之make uImage编译过程分析中已经提到了uImage是一个压缩的包并且内含压缩程序,可以进行自解压.自解压完成之后内核代码从物理地址为0x30008000处开始运行.下面分析在 ...
- Linux移植之子目录下的built-in.o生成过程分析
在Linux移植之make uImage编译过程分析中罗列出了最后链接生成vmlinux的过程.可以看到在每个子目录下都有一个built-in.o文件.对于此产生了疑问built-in.o文件是根据什 ...
- Linux移植之auto.conf、autoconf.h、Mach-types.h的生成过程简析
在Linux移植之make uImage编译过程分析中分析了uImage文件产生的过程,在uImage产生的过程中,顺带还产生了其它的一些中间文件.这里主要介绍几个比较关键的文件 1.linux-2. ...
- Linux移植之make uImage编译过程分析
编译出uboot可以运行的linux内核代码的命令是make uImage,下面详细介绍下生成linux-2.6.22.6/arch/arm/boot/uImage的过程: 1.vmlinux.Ima ...
- Linux移植之配置过程分析
在Linux移植之移植步骤中已经将Linux移植的过程罗列出来了,现在分析一下Linux的配置过程,将分析以下两个配置过程: 1.make s3c2410_defconfig分析 2.make men ...
随机推荐
- JVM性能调优与实战基础理论篇-上
Java虚拟机 概述 Java官方文档 https://docs.oracle.com/en/java/index.html JVM是一种规范,通过Oracle Java 官方文档找到JVM的规范查阅 ...
- LeetCode随缘刷题之盛最多水的容器
package leetcode.day_01_30; /** * 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) .在坐标内画 n 条垂直线,垂直线 i的两个端 ...
- linux_12
一.主从复制及主主复制的实现 主从复制 master配置 # yum -y install mysql-server # systemctl enable --now # vim /etc/my.cn ...
- pycharm关闭pytest
在pycharm中,如果py文件以 test 开头,则运行时会使用pytest执行,pycharm关闭pytest方式如下 File -> Settings -> Tools -> ...
- Java读写文件常用方法
一.字符流:读写纯文本(txt,csv等), 1 字符流写文件主要用:FileWriter,BufferedWriter,PrintWriter 1.1 测试 FileWriter 写入 privat ...
- [源码解析] NVIDIA HugeCTR,GPU 版本参数服务器 --(1)
[源码解析] NVIDIA HugeCTR,GPU版本参数服务器 --(1) 目录 [源码解析] NVIDIA HugeCTR,GPU版本参数服务器 --(1) 0x00 摘要 0x01 背景 1.1 ...
- SpringBoot自定义classloader加密保护class文件
背景 最近针对公司框架进行关键业务代码进行加密处理,防止通过jd-gui等反编译工具能够轻松还原工程代码,相关混淆方案配置使用比较复杂且针对springboot项目问题较多,所以针对class文件加密 ...
- kubebuilder operator的运行逻辑
kubebuilder 的运行逻辑 概述 下面是kubebuilder 的架构图.可以看到最外层是通过名为Manager的组件驱动的,Manager中包含了多个组件,其中Cache中保存了gvk和in ...
- 自己写了个Java RMI(远程方法调用)的实现案例
自己简单写了个Java RMI(远程方法调用)的实现案例. 为了更好理解RMI(远程方法调用).序列化的意义等等,花费三天多的时间肝了一个Java RMI的实现案例. !!!高能预警!!! 代码量有点 ...
- C# NPOI导出数据到Excel
1 public void Export() 2 { 3 //创建工作簿对象 4 IWorkbook workbook = new XSSFWorkbook(); 5 6 ExportStatisti ...