最近在TI 的DVSDK下写驱动模块时老受linux内核svn版本号问题的困扰,如"2.6.37-svn41"、"2.6.37-svn51"等等,svn版本变一次,从上面取下的代码内核版本就要变一次,这样造成原来驱动模块ko文件必须重新拷贝到新的lib/modules/2.6.37-svn51下,非常麻烦且不利于发版本。

按其说法将arch/arm/configs/omap3_evm_defconfig里面

CONFIG_LOCALVERSION_AUTO=y

修改为#CONFIG_LOCALVERSION_AUTO=y

或#CONFIG_LOCALVERSION_AUTO is not set

清理内核源码根目录下的.config文件后,重新make omap3_evm_defconfig或者make linux_config,CONFIG_LOCALVERSION_AUTO相关项虽然未设置但依旧被内建。

后来发现将其设置为:

CONFIG_LOCALVERSION_AUTO=n

才使其默认不选上,其原理研究后再补上。

但是这样做了之后,编译linux内核并引导发内核版本变成了"2.6.37+",多了个“+”号

这个就需要修改scripts/setlocalversion的脚本了,先来看一段代码

scm_version()

{

local short

short=false

cd "$srctree"

if test -e .scmversion; then

cat .scmversion

return

fi

if test "$1" = "--short"; then

short=true

fi

# Check for git and a git repo.

if test -d .git && head=`git rev-parse --verify --short HEAD 2>/dev/null`;then

# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore

# it, because this version is defined in the top level Makefile.

if [ -z "`git describe --exact-match 2>/dev/null`" ]; then

# If only the short version is requested, don't bother

# running further git commands

if $short; then

echo "+"

return

fi

……

fi

……

fi

}

这里有个echo "+",那“2.6.37+”里面的“+”到底是这条语句产生的吗?开始看到有些博客说修改这里,注释掉"echo "+"",但并未起作用。需要认真分析一下,看第3个f语句,意思是至少有.git目录存在的话才会执行这后面的,但我们用的svn,没有.git的,所以这里的echo "+"并未执行。再看一段代码:

# scm version string if not at a tagged commit

if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then

# full scm version string

res="$res$(scm_version)"

else

# append a plus sign if the repository is not in a clean

# annotated or signed tagged state (as git describe only

# looks at signed or annotated tags - git tag -a/-s) and

# LOCALVERSION= is not specified

if test "${LOCALVERSION+set}" != "set"; then

scm=$(scm_version --short)

res="$res${scm:++}"

fi

fi这里的if就是说如果CONFIG_LOCALVERSION_AUTO定义的话,会加上svn版本号,我们已经设为n了,所以会执行else部分,scm=$(scm_version --short)虽然将--short传给scm_version使得short=true,但.git不存在,所以scm_version并未打印出“+”,再来看res="$res${scm:++}"这句话什么意思呢?scm:++实际上是说如果scm未定义的话,将使用默认值"+"也就是说:+表示使用默认值的意思,而第二个“+”表示默认值。所以将第二个“+”去掉即可。也就是改成res="$res${scm:+}",即可打印不带“+”的版本号“2.6.37”。

希望给遇到同样问题的同行以帮助!

linux 内核 config_localversion_auto,关于CONFIG_LOCALVERSION_AUTO设置去掉内核版本号SVN后缀...相关推荐

  1. [替换操作系统内核]——Linux替换内核版本、设置默认内核及删除特定版本内核

    一.Linux内核下载地址 为了方便大家找到各个版本的Linux内核,将地址附上:Index of /pub/linux/kernel/ 二.Centos操作系统替换内核版本 当前系统内核版本为3.1 ...

  2. linux 3.5.0-23-generic内核版本系统调用数目,Linux操作系统分析(三)- 更新内核与添加系统调用...

    环境:Ubuntu 12.10     学号:SA****199 1.更新内核: 直接安装的系统内核版本一般不是最新,用 uname -a 查看一下 自己的版本,OK,我的是: Linux chenh ...

  3. Linux Malloc分析-从用户空间到内核空间

    Linux Malloc分析-从用户空间到内核空间 本文介绍malloc的实现及其malloc在进行堆扩展操作,并分析了虚拟地址到物理地址是如何实现映射关系. ordeder原创,原文链接: http ...

  4. linux内核4.0,新闻|Linux内核4.0功能:实时内核补丁,支持PS3

    Linux Torvalds 在Linux内核邮件列表里发布了Linux内核新的稳定版. Linux 4.0,代号为'Hurr durr I'm a sheep',带来了一小系列新硬件支持,驱动改进, ...

  5. linux 编译3g驱动_linux重新编译内核

    1.内容简介 linux内核简介 linux内核版本号 linux为什么重新编译内核 linux内核编译模式 linux内核功能划分 linux内核编译步骤 2linux内核简介 内核,是一个操作系统 ...

  6. s5pv210 linux内核移植,S5PV210(TQ210)学习笔记——内核移植与文件系统构建之二

    由于之前做过2440和6410,鉴于时间原因,这里暂时跨过其他模块的裸机驱动和uboot移植,直接进入内核移植及驱动开发方面的学习. 三 设置uboot启动参数 我的nfs根目录为/nfsroot,我 ...

  7. linux 各用户内存_Linux用户空间与内核空间(理解高端内存)

    Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数 ...

  8. 一文读懂 Linux 下单机实现百万并发的内核黑科技:连接跟踪(Conntrack)

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 本文介绍连接跟踪(connection tracking,conntrack,CT)的原理,应用,及其在 Linu ...

  9. linux 上下文切换时对用户task和内核task区别对待——针对fpu

    目录 关于pthread和kthread的说明 和kthread/pthread区别对待相关的数据结构 调用图 fpu load/store 在调度中的处理 fpu load/store 在KVM中的 ...

最新文章

  1. 2016-2017-2 《Java程序设计》预备作业1 总结
  2. OpenCV之feature2d 模块. 2D特征框架(1)Harris 角点检测子 Shi-Tomasi角点检测子 定制化创建角点检测子 亚像素级的角点检测 特征点检测
  3. 前端进阶之如何正确判断this的指向?
  4. 组装自己的tesla超级计算机
  5. JAVA学习--面向对象的特征二:继承性
  6. java中几种基本数据类型之间的转换
  7. 今日头条人群洞察报告
  8. box2dweb 学习笔记--sample讲解
  9. python vs golang_Ruby vs Golang:四个维度对比,谁更胜一筹?
  10. 金三银四,那浏览器兼容你知多少?
  11. 信息系统安全等级保护备案任务详单
  12. CS 系统框架二[增加默认启动以及代码打开窗体]
  13. Oracle常用SQL总结
  14. pytorch基础知识
  15. java 小总结,以后复习看以看
  16. java中的值传递与引用传递
  17. Linux core文件生成及设置 查看core文件由哪个程序生成的
  18. 21天挑战赛第三文——多线程threading
  19. 适用于 iOS、Android 和 Windows 设备的移动设备管理
  20. 易乐游装在云服务器_新手搭建云服务器详细过程

热门文章

  1. 摄像头ISP系统原理(下)
  2. 图像零交叉点,视频生成,视频识别,视频摘要,视频浓缩
  3. CVPR2020行人重识别算法论文解读
  4. 三维目标检测算法原理
  5. 自动类型转换和强制类型转换
  6. android 三级界面返回直接到一级界面
  7. JavaScript_day01
  8. jenkins+ant+jmeter接口测试
  9. 2022-2028年中国服装电商行业发展战略规划及投资方向研究报告
  10. hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询