如何修复“源文件比字节编译文件更新”错误?

Posted

技术标签:

【中文标题】如何修复“源文件比字节编译文件更新”错误?【英文标题】:How to fix "Source file newer than byte-compiled file" error? 【发布时间】:2014-03-21 07:06:59 【问题描述】:

我收到了错误

源文件 `~/.emacs.d/elpa/cmake-mode-20110824/cmake-mode.el' 比字节编译文件更新

当我尝试在 cmake 模式下打开 CMakeLists.txt 文件时。

我的 .emacs 包含(部分)以下内容:

(setq load-path (cons 
             (expand-file-name "~/.emacs.d/elpa/cmake-mode-20110824") 
             load-path))
(require 'cmake-mode)
(setq auto-mode-alist
      (append '(("CMakeLists\\.txt\\'" . cmake-mode)
            ("\\.cmake\\'" . cmake-mode))
              auto-mode-alist))

回溯:

Debugger entered--Lisp error: (wrong-type-argument char-table-p nil)
  char-table-parent(nil)
  cmake-mode()
  set-auto-mode-0(cmake-mode nil)
  set-auto-mode()
  normal-mode(t)
  after-find-file(nil t)
  find-file-noselect-1(#<buffer CMakeLists.txt> "~/CMakeLists.txt" nil nil   "~/CMakeLists.txt" (19923691 2049))
  find-file-noselect("~/CMakeLists.txt" nil nil t)
  find-file("~/CMakeLists.txt" t)
  call-interactively(find-file nil nil)

我对为什么会发生此错误感到困惑。免责声明:我是一个 emacs 和 elisp 菜鸟。

【问题讨论】:

您的免责声明是多余的,因为“源文件更新...”是警告而不是错误:) 这对我来说是个错误,该死! 【参考方案1】:

问题可能出在您的cmake-mode 中,该cmake-mode 已经过时了。 以下是解决方法:

    从上面删除所有设置 确保您拥有emacs24

    在你的~/.emacs:

    (package-initialize)
    (add-to-list 'package-archives
      '("melpa" . "http://melpa.milkbox.net/packages/"))
    

    M-x package-list-packages。使用 C-s 查找 cmake-mode。 使用 i 标记安装并使用 x 进行安装。

【讨论】:

如果需要add-to-list,这是cmake-mode.el中的一个错误。 确实,这个问题最近已经修复了。 另外,您可能希望将load-prefer-newer 设置为非零值以避免将来加载过时的字节码文件。

以上是关于如何修复“源文件比字节编译文件更新”错误?的主要内容,如果未能解决你的问题,请参考以下文章

当您无法修复表时,如何修复 MySQL“不正确的密钥文件”错误?

如何修复错误“找不到设备支持文件”

如何修复 node.js 文件上传 ENOENT 错误?

如何修复 Git 错误“目标文件 ... 为空”?

如何修复 Git 错误“目标文件 ... 为空”?

如何修复“AnonymousUser”对象没有属性“配置文件”错误?