免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1813 | 回复: 0
打印 上一主题 下一主题

[文件系统] busybox config如何去掉时间戳(已解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-02 10:12 |只看该作者 |倒序浏览
本帖最后由 tqyou85 于 2013-07-22 16:24 编辑

busybox连续两次编译出来的.o、binary文件都不一致,比对了下,原因是编译生成文件中包含了时间信息。
busybox本身的代码是不包含__DATA__, __TIME__这些的,仔细比对了下.o文件,
发现libbb/messages.c文件包含有时间信息:
#define BANNER "BusyBox v" BB_VER " (" BB_EXTRA_VERSION ")"
还有其他几个文件有这个宏的使用,去掉时间信息之后,.o文件连续两次编译能保持一致了。


但是,每次编译都会自动生成一个autoconf.h,这个文件包含了时间信息,怀疑跟busybox的config有关,但是不知道该如何修改config文件?生成autoconf.h的时候不要包含时间信息。

各位大侠请指点下。

经过几天的仔细分析,终于找到解决方法了:
比较.o文件发现,.o文件的前面都有一段字符串,包含时间信息,进一步跟进代码,找到原来是这个宏:
#define BANNER "BusyBox v" BB_VER " (" BB_EXTRA_VERSION ")"
在代码中修改了这个宏定义,去掉时间信息。
进一步比较发现每次编译都会自动生成autoconf.h文件,这个文件每次生成都带有时间戳。研究busybox的编译脚本scripts/kconfig/confdata.c发现:
  1. env = getenv("KCONFIG_NOTIMESTAMP");
  2.     if (env && *env)
  3.         use_timestamp = 0;

  4.     fprintf(out, _("#\n"
  5.                "# Automatically generated make config: don't edit\n"
  6.                "# Busybox version: %s\n"
  7.                "%s%s"
  8.                "#\n"),
  9.              sym_get_string_value(sym),
  10.              use_timestamp ? "# " : "",
  11.              use_timestamp ? ctime(&now) : "");
复制代码
看来busybox还是设置有参数可以修改的,只需要定义下KCONFIG_NOTIMESTAMP这个环境变量,搞定。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP