@

问题

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的软链接的更多相关文章

  1. Linux移植到自己的开发板(二)UBOOT和Linux

    @ 目录 一.uboot跳转到Linux 二. Linux内核启动之解压阶段 三. Linux内核启动之汇编阶段 插曲:关于Kconfig和Makefile 四. Linux内核启动之C语言阶段 五. ...

  2. linux移植问题汇总(一)

    linux移植问题汇总(一) 在此记录移植linux过程中出现的问题以及解决方法. 项目GitHub地址 linux3.0.80:https://github.com/numbqq/linux-3.0 ...

  3. Linux移植之tag参数列表解析过程分析

    在Linux移植之内核启动过程start_kernel函数简析中已经指出了start_kernel函数的调用层次,这篇主要是对具体的tag参数列表进行解析. 1.内存参数ATAG_MEM参数解析 2. ...

  4. Linux移植之内核启动过程start_kernel函数简析

    在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...

  5. Linux移植之内核启动过程引导阶段分析

    在Linux移植之make uImage编译过程分析中已经提到了uImage是一个压缩的包并且内含压缩程序,可以进行自解压.自解压完成之后内核代码从物理地址为0x30008000处开始运行.下面分析在 ...

  6. Linux移植之子目录下的built-in.o生成过程分析

    在Linux移植之make uImage编译过程分析中罗列出了最后链接生成vmlinux的过程.可以看到在每个子目录下都有一个built-in.o文件.对于此产生了疑问built-in.o文件是根据什 ...

  7. Linux移植之auto.conf、autoconf.h、Mach-types.h的生成过程简析

    在Linux移植之make uImage编译过程分析中分析了uImage文件产生的过程,在uImage产生的过程中,顺带还产生了其它的一些中间文件.这里主要介绍几个比较关键的文件 1.linux-2. ...

  8. Linux移植之make uImage编译过程分析

    编译出uboot可以运行的linux内核代码的命令是make uImage,下面详细介绍下生成linux-2.6.22.6/arch/arm/boot/uImage的过程: 1.vmlinux.Ima ...

  9. Linux移植之配置过程分析

    在Linux移植之移植步骤中已经将Linux移植的过程罗列出来了,现在分析一下Linux的配置过程,将分析以下两个配置过程: 1.make s3c2410_defconfig分析 2.make men ...

随机推荐

  1. JDBC加强

    一.使用PreparedStatement预编译语句防止SQL注入 什么是SQL注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行 ...

  2. 6、前端--DOM操作(查找标签、节点操作、获取值操作、class操作、样式操作、绑定事件、内置参数this)

    DOM操作之查找标签 前缀关键字>>>:document # 基本查找(核心) document.getElementById 根据ID获取一个标签 document.getElem ...

  3. 「codeforces - 1284G」Seollal

    给定 \(n\times m\) 的网格图,有些格子有障碍,无障碍且相邻的格子之间连边形成图.保证 \((1, 1)\) 无障碍,保证无障碍格子连通. 将网格图黑白染色,相邻格子颜色不同,\((1, ...

  4. 再也不用担心重装VSCode了

    1. 关于Settings Sync插件 Setings Sync插件可以同步你的VSCode配置到Github Gist,当你更换电脑重新搭建VSCode环境的时候,直接使用该插件拉取你之前同步的配 ...

  5. 图解python | 基础数据类型

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  6. NSSCTF-[UTCTF 2020]Zero

    做misc嘛,先把题目一开始就给的一串英文翻译一下, 可以看到说明的是这个txt文档可能是包含其他的文本量,这个文本里面还有其他的东西,只是正常是看不到, 使用binwalk或者fomost分离尝试, ...

  7. 你真的会做数据分析吗?如果不会我推荐思迈特软件Smartbi

    你是否还在被以下问题所困扰? 辛苦辛苦地拿到了一堆数据,却不知道从何下手分析? 因为不会统计数据分析伤透脑筋,而打消考博的梦想? 数据分析求助无门,涌现出想要放弃学位的念头? 突然开天眼般的想到了一个 ...

  8. JavaBean , EJB , spring , POJO

    1996年 , 发布了java bean 1.00-A  当时的java bean有什么用呢 javaBean最初是为Java GUI的可视化编程实现的.你拖动IDE构建工具创建一个GUI 组件(如多 ...

  9. ❀ Spring5学习大总结

    一.了解 Spring 基本介绍.主要思想 IoC/DI 1.了解 Spring 基本介绍 (1) Spring是什么? Spring 是一个轻量级的 DI/IoC 和 AOP 容器的开源框架,致力于 ...

  10. [翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed Systems"

    [翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed ...