@

问题

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. LeetCode随缘刷题之盛最多水的容器

    package leetcode.day_01_30; /** * 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) .在坐标内画 n 条垂直线,垂直线 i的两个端 ...

  2. 基于XC7A100T的PCIe千兆电口以太网收发卡

    一.板卡概述 本板卡采用Xilinx公司的Artix7系列的XC7A100T-2FGG484 芯片作为主处理器.包含双路千兆电口网络,双组DDR,PCIeX1 V1.1接口,板卡设计满足工业级要求. ...

  3. suse 12 部署chrony时间同步服务器

    文章目录 1.ntp和chrony的区别 1.1.关于chrony 1.2.chronyd的优势 2.环境介绍 3.部署chrony 4.配置chrony 4.1.配置文件解析 4.2.查看chron ...

  4. html页面预览pdf文件使用插件pdfh5.js

    html预览pdf文件需要依赖pdf.js 移动端适配需要pdfh5.js 记录移动端适配pdfh5.js的用发 在线预览: https://www.gjtool.cn/pdfh5/pdf.html? ...

  5. ios开发 Pods工具心得

    Pods 这也是我的第一篇微博,希望能给大家带来帮助,也便于我自己温习 第一步:新建一个xcode项目(这个不解释了) 第二步:打开终端(剩下的操作都在终端里面了)

  6. 私有化轻量级持续集成部署方案--07-私有NPM仓库-Verdaccio

    提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 对于个人来说,私有NPM仓库 作用性基本很小,但是对于企业,私有NPM仓库 可以保护代码暴露,具有很大的意义. 也是 ...

  7. [虚拟化]虚拟机 XML 配置

    虚拟机 XML 配置示例 虚拟机的 XML 配置(也称为 域 XML )决定虚拟机的设置和组件.下表显示了虚拟机(VM)的 XML 配置示例并解释了其内容. 要获取虚拟机的 XML 配置,您可以使用 ...

  8. 开源绘画应用 Pinta 已移植到GTK 3和.NET 6

    Pinta 是一款开源绘画应用,适用于 Linux.Windows 和 macOS.你可以用它来进行自由手绘/素描.你也可以用它在现有的图片上添加箭头.方框.文字等. 年初发布了 Pinta 2.0. ...

  9. IDisposable?释放非托管资源接口

    原文:https://www.cnblogs.com/luminji/archive/2011/03/29/1997812.html IDisposable高级篇:https://docs.micro ...

  10. C#中default 、base 、this关键字用法简介

     C#中default关键字用法简介 default 关键字可在switch语句或泛型代码中使用.switch语句:指定默认标签.泛型代码:指定类型参数的默认值.对于引用类型为空,对于值类型为零swi ...