尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Emacs 在 Linux 源码编译安装全流程:configure、make 到 make install 实战详解

发布时间:2026/9/24 12:37:40

资讯中心
01
ARTICLE

Emacs 在 Linux 源码编译安装全流程:configure、make 到 make install 实战详解

Emacs 在 Linux 源码编译安装全流程:configure、make 到 make install 实战详解
简介Emacs作为一款开源文本编辑器在Linux开发者群体中广受推崇这份PDF系统介绍了Emacs的起源、主要功能特性及其在Redhat企业版中的安装配置过程适合Linux系统运维、软件开发及对高效文本编辑工具有兴趣的读者参考。资源包含1个PDF文档大小仅143KB为期刊论文格式的简明资料内容紧凑、层次分明便于快速通读与保存。已有126人学习/下载可作为Emacs入门与部署的实用参考。文档不仅讲解了Emacs涵盖邮件收发、远程登录、多语言编程支持等集成环境特性还完整演示了从官网获取安装包、解压、执行configure脚本、处理配置备份到运行make完成安装的步骤流程并提示了配置出错时的重新构建方法能够帮助读者避开常见坑点在Linux环境中顺利完成Emacs的安装与基础配置。1. Emacs 是什么Linux 下那台活了五十年的“文本编辑机器”2024 年了Visual Studio Code 和 JetBrains 全家桶统治着开发者的桌面但你在生产服务器、嵌入式开发板和没有图形界面的远程终端里依然能看到有人在用 Emacs。甚至不少老工程师在 SSH 连上去之后第一件事就是敲emacs—— 不是因为他们不会用 vim而是 Emacs 的编辑命令一旦形成肌肉记忆效率确实比鼠标流高太多。这份资料讲的是 Emacs 在 Redhat 系 Linux 上的完整安装流程从下载 tar 包、configure 配置到 make 编译、make install 落地覆盖了源码安装的全部关键步骤还附带了一组高频编辑命令。适合刚接触 Linux 的运维新手、需要在服务器上快速配置文本编辑环境的开发人员以及想把手头 CentOS/RHEL 机器上的编辑器换掉的工程师。与其被各色 IDE 卡得动弹不得不如先把这个五十年历史的编辑器装明白。2. 编译安装全流程从 tar 包到可执行文件的关键路径2.1 下载与解压版本选择和文件完整性校验源码安装的第一步永远是获取干净的源码包。原文例子下载的是 2012 年初发布的 Emacs 23.4对应文件名是emacs-23.4.tar.bz2。这份资料的适用场景虽然是 Redhat Enterprise 5但整个流程放到 CentOS 6/7、Rocky Linux、AlmaLinux 上依然成立只是依赖包的安装命令从yum换成了dnf。从 GNU 官网https://www.gnu.org/software/emacs/下载时我一般会同时把.sig签名文件拉下来验证完整性防止下载过程损坏或镜像源被污染不过内网环境跳过这步也常见。# 把安装包拷到 /opt 下统一管理避免散落在家目录 cp emacs-23.4.tar.bz2 /opt # 解压 .bz2 格式的压缩包-j 告诉 tar 使用 bzip2 解压 cd /opt tar -jxvf emacs-23.4.tar.bz2 # 解压完成后确认目录结构 ls -ld /opt/emacs-23.4tar -jxvf四个参数里-j指定 bzip2 解压格式-x是解压操作-v显示过程文件列表方便观察-f指定归档文件名。如果下载的是emacs-23.4.tar.gz对应的解压参数就要换成-zxvf这是新手最容易翻车的第一处。解压后/opt下会生成emacs-23.4目录里面是完整的源码树包括srcC 源码、lispEmacs Lisp 标准库、etc文档和配置文件模板等子目录。2.2 configure 配置让编译系统认识你的发行版进入解压目录之后第一件正经事是执行./configure。这一步的作用不是编译而是探测当前系统的编译环境——检查有没有 C 编译器、X11 图形库是否齐全、ncurses 终端库在哪个路径、CPU 架构是什么并根据探测结果生成Makefile。原文特别强调要仔细阅读 configure 输出的配置细节看有没有CPU 错误、libraries 文件缺失之类的提示这是血泪经验configure 阶段漏掉的依赖到 make 阶段会以另一种更难看的方式炸回来。# 切换到 root 用户编译安装需要写 /usr/local 等系统目录 su - # 进入源码目录 cd /opt/emacs-23.4 # 执行配置脚本--prefix 指定安装路径避免污染系统默认目录 ./configure --prefix/usr/local/emacs-23.4 # 如果只需要纯终端版本不依赖 X11 图形界面加 --without-x # ./configure --prefix/usr/local/emacs-23.4 --without-xconfigure 脚本支持大量参数最常用的是--prefix它决定了make install最终把可执行文件装到哪个目录。默认是/usr/local这样emacs可执行文件会落在/usr/local/bin一般已经在 PATH 环境变量里了。但我习惯指定一个带版本号的目录比如/usr/local/emacs-23.4好处是将来升级或卸载时直接删目录就行不会在/usr/local里留下一堆不知道属于哪个版本的零散文件。代价是装完后需要手动把/usr/local/emacs-23.4/bin加进 PATH后面会说怎么配。--without-x是个重要选项。在纯服务器环境或最小化安装的系统上经常缺 X11 开发库configure 会提示checking for X... no。此时如果不加--without-xEmacs 会退化成无图形支持的版本某些功能会受限加了之后则明确告诉编译系统我不需要图形界面编译出来的版本更小、依赖更少在 SSH 终端里使用完全够用。还有一个选项--with-x-toolkitgtk或--with-x-toolkitno控制图形工具栏的样式如果你用的是 GNOME 桌面GTK 版本观感最协调。2.3 make 编译与安装输出里的关键信息怎么读configure 顺利通过后Makefile生成完毕接下来就是真正的编译环节。原文给出的命令序列是make然后验证src/emacs -Q最后make install和make clean。这一步的耗时取决于机器性能Pentium 4 时代的老机器编 Emacs 23.4 可能要十几分钟近年来的 CPU 基本两分钟搞定。# 开始编译-j 4 表示并行编译4 核机器可以提速 # 但 Emacs 这种老牌项目有时并行编译会出古怪错误保险起见先不加 -j make # 编译成功后在源码目录验证可执行文件 src/emacs -Q # 安装可执行文件和附属的 lisp 库、文档等到 --prefix 指定目录 make install # 清理编译产生的 object 文件释放磁盘空间 make cleanmake执行过程中会滚动大量编译日志不需要每行都看但有几个节点值得关注。第一是编译是否报错如果出现Error 1或Error 2且前面跟着undefined reference、cannot find -lXXX之类的信息说明有依赖库缺失或版本不对。第二是最后几行是否输出DONE或类似的完成提示有些版本的 Emacs 编译完成后会显式提示下一步该做什么。src/emacs -Q是原文给的一个很妙的验证手段。-Q参数等价于--no-init-file --no-site-file --quick意思是启动时跳过所有用户级和站点级的初始化配置文件以最干净的状态启动。这样验证的是编译出的二进制本身是否健康排除了用户配置文件的干扰。如果src/emacs -Q能正常弹出界面说明编译成功可以放心make install。make clean的作用是删除编译过程中生成的*.o目标文件和最终可执行文件把源码目录恢复到接近刚解压的状态。这样做的意义有二一是节省磁盘空间src/目录下那些 object 文件加起来有几百 MB二是为将来重新编译做准备——如果你改了 configure 参数想重新构建不清干净的话残留的 object 文件可能导致链接错误。但注意make clean只清编译产物不会删除 configure 生成的Makefile。如果想彻底回到初始状态重新开始需要用make distclean这个命令会把Makefile和 config 缓存一并清除。原文里提到的“清除之前生成的编译配置备份文件再运行 configure”指的就是make distclean这层操作只是 2012 年时的写法在make distclean还没完全普及时实际操作可能是手动删除 config 文件。在 Emacs 23.4 上我一般这样做配错参数后先make distclean再重新./configure避免残留的 config.cache 污染新的配置。编译安装过程中的 PATH 问题也值得提前处理。如果用了自定义--prefix装完后 shell 可能找不到emacs命令。常见的做法是# 编辑 /etc/profile让所有用户生效 echo export PATH/usr/local/emacs-23.4/bin:$PATH /etc/profile # 重新加载配置文件 source /etc/profile # 验证命令可用 which emacs emacs --version这里有个容易忽略的细节echo /etc/profile之前先确认/etc/profile文件末尾是否有换行否则追加的内容会粘在上一行末尾。还有就是source只对当前 shell 生效重新打开的终端会自动读取/etc/profile不需要每次手动 source。2.4 表格式掌握安装过程中的关键文件与目录路径/文件作用备注/opt/emacs-23.4.tar.bz2源码压缩包bzip2 格式解压用tar -jxvf/opt/emacs-23.4/源码根目录configure、make 都在这里执行/opt/emacs-23.4/src/emacs编译生成的原始可执行文件未安装前可直接运行验证/opt/emacs-23.4/Makefileconfigure 生成的编译脚本决定 make 的行为/usr/local/emacs-23.4/最终安装路径make install后生成 bin、lib、share 等/etc/emacs/site-start.el站点级全局初始化文件对系统内所有用户生效站点级配置文件site-start.el在安装后就会生成放置在$(prefix)/share/emacs/site-lisp/下也可以通过 configure 参数调整。它比用户级.emacs先加载适合做系统级的默认配置但普通用户应该尽量把个性化配置放在自己的~/.emacs或~/.emacs.d/init.el里避免相互干扰。3. 安装后的验证与基础操作把编辑命令变成肌肉记忆3.1 启动自检用 -Q 参数隔离问题安装完成后第一次启动 Emacs 时别急着干活先跑一遍自检流程。原文在 make 阶段就用了src/emacs -Q安装后我依然会用全路径启动一次干净模式确认安装目录下的二进制和 lisp 库文件路径配置正确。# 用安装后的真实路径启动-Q 跳过所有初始化配置 /usr/local/emacs-23.4/bin/emacs -Q # 正常方式启动加载用户配置 emacs-Q和--no-init-file的区别值得说清楚。--no-init-file只跳过用户的~/.emacs和~/.emacs.d/init.el但依然会加载站点级配置site-start.el-Q则连站点配置一起跳过是最彻底的干净启动。当你怀疑某个 Emacs 异常行为是自己配置文件引起的时候先用-Q启动一遍如果问题消失基本可以断定锅在配置文件上这是个效率极高的排错手段。3.2 高频编辑命令C-v、M-v、C-l 的操作逻辑Emacs 的按键表示法有一套统一规则大写 C 代表 Ctrl 键大写 M 代表 Meta 键在键盘上通常是 Alt 键但某些终端里需要额外配置。原文给出的翻页命令中C-v是向前移动一屏M-v是向后移动一屏这两个命令比 PageUp/PageDn 高效的地方在于手不用离开键盘主区。# 在 Emacs 中按 C-h t 可以打开内置教程 # C-h 表示先按 Ctrlh然后按 t进入交互式学习向导光标移动一组命令是构建肌肉记忆的第一个台阶按键组合功能使用场景C-f向前移动一个字符替代方向键右键C-b向后移动一个字符替代方向键左键C-n移动到下一行替代方向键下键C-p移动到上一行替代方向键上键C-a移动到行首快速回到行开头C-e移动到行尾快速跳到行末C-v向前移动一屏大型文件翻页神器M-v向后移动一屏配合 C-v 双向浏览C-l重绘屏幕且光标居中滚动查看上下文C-l这个命令很有意思原文特意提醒是字母 l 不是数字 1。它的作用是清屏重绘并把光标所在行移到屏幕正中央——当你在一个很长的文件里编辑时C-l能瞬间把当前编辑位置拉回视野中心不需要手动滚动找光标。这也是 Emacs 老手和新手直观拉开差距的命令。在无图形界面的终端里C-l还承担着缓解终端残影的作用。3.3 删除与撤销理解“移除”和“杀死”的区别原文给了一组删除类命令这里的术语需要提前说明Emacs 把删除操作细分为“移除”删除和“杀死”剪切到 kill ring 环形剪贴板。普通删除是去掉字符而“杀死”会把文本存到内存中的 kill ring 里方便后续粘贴复用。按键组合功能对应的用户习惯C-d删除光标后的一个字符Delete 键M-Backspace移除光标前的一个词CtrlBackspaceM-d移除光标后的一个词CtrlDeleteC-k移除从光标到行尾的所有字符ShiftDelete 行尾部分M-k移除从光标到句尾的所有字符按句子粒度删除这里最容易误解的是C-k。刚接触 Emacs 的人常以为C-k会删除整行但实际上它只删除从光标位置到行尾的内容光标之前的字符和换行符都保留。如果光标在行首第一次C-k删掉整行内容但空行还在需要再按一次C-k才能连换行符一起删掉。这个设计初看别扭实际用起来却是精准控制的好工具——想删后半行就删后半行想删全行就按两次。M- 前缀的命令在终端里需要注意如果按着 Alt 键没反应检查终端软件的“使用 Alt 作为 Meta 键”设置或者直接用 Esc 键代替先按一下 Esc 再按对应字符效果等同于 M- 前缀。3.4 保存、退出与帮助系统第一次使用的安全网编辑器用得再熟练不知道怎么保存退出就是灾难。Emacs 的保存快捷键是C-x C-s先按 C-x 再按 C-s退出是C-x C-c。这套组合键的设计逻辑是C-x 是扩展命令前缀之后跟的 C-s 表示 save——用一次就能发现 Emacs 帮助系统的规律。C-h是帮助系统的入口。按C-h C-h会列出所有帮助相关的子命令比如C-h t打开内置教程C-h k查询某个按键绑定的命令C-h f查询某个函数的功能说明。这套帮助系统的密度比 Vim 的:help更高因为它本身就是 Emacs Lisp 交互环境的一部分任何命令都能追溯到它的函数定义和源码。# 在 Emacs 内输入以下按键查看 Ctrl-f 绑定了什么命令 # C-h k C-f # 输出会显示: f is bound to forward-char # 这说明 C-f 调用的是 forward-char 函数函数源码可以直接跳转查看我见过不少新手卡在退出这一步——按了几次C-x C-c没反应直接关终端导致编辑内容丢失。这里有一个实际场景如果你打开了多个文件C-x C-c会逐一询问是否保存每个修改过的缓冲。如果不想被逐个问可以先C-x s一次性保存所有需要保存的文件再C-x C-c退出。4. 避坑与常见问题Redhat 系上安装 Emacs 的六次翻车记录4.1 configure 提示 no window system found现象执行./configure时输出信息最后出现checking for X... no或直接提示The following required libraries were not found: X11。原因系统没有安装 X11 开发库。Redhat Enterprise 5 和 CentOS 最小化安装时默认不装图形开发包而 Emacs 的图形界面版本编译时需要 X11 头文件和链接库。解决两个方案二选一。如果确认不需要 GUI 图形界面加--without-x参数重新 configure编译纯终端版体积小、依赖少。如果确实需要在图形桌面里使用 Emacs用包管理器补齐依赖Redhat Enterprise 5 上用yum install libX11-devel libXpm-develCentOS 7 及更新版本用yum install libX11-devel libXpm-devel libjpeg-devel libgif-devel libtiff-devel。装完后重新./configure就能探测到 X11。4.2 make 时报错 cannot find -lgif 或 -ljpeg现象configure 正常通过但make编译到中段时报错类似ld: cannot find -lgif链接器找不到某个库文件。原因configure 阶段虽然探测到了部分 X11 组件但缺少图像格式支持库。Emacs 的图形工具栏和图片显示功能依赖 libgifGIF 格式和 libjpegJPEG 格式这些开发包在最小化安装的 Redhat 系系统上不是默认组件。解决安装对应的-devel包后重新编译。RHEL/CentOS 5/6 上执行yum install libgif-devel libjpeg-devel libtiff-devel。注意装完包后必须重新执行make distclean再./configure因为 configure 已经把“没有 libgif”的结果缓存进了 config 文件直接重跑 make 不会重新探测。此处分两步走先make clean清理上次编译的 object 文件再make distclean清除 Makefile 和 config 缓存最后重新 configure。顺序不能反否则 distclean 找不到完整的 Makefile 会报错。4.3 make -j4 并行编译中途崩溃现象执行make -j4想加快编译速度结果编译线程跑到一半报错错误信息五花八门比如gcc: internal compiler error或奇怪的segmentation fault。原因Emacs 23.4 这种老项目的 Makefile 依赖关系设计较早对并行编译的支持并不完善。多个编译线程同时生成头文件或同时写同一个输出文件时会产生竞争条件导致偶发性的编译失败。这类错误在单线程编译时不会出现排查起来极具迷惑性。解决别挣扎直接回到单线程编译。先make distclean彻底清理再执行不带-j参数的make。多等两三分钟换来稳定的编译结果这笔时间花得值。如果确实想并行加速可以用make -j2这种保守参数碰碰运气但不要在一台新环境上默认-j4。编译成功后再次make clean和make install。4.4 终端里 Alt 键失效M-x 变成特殊字符现象在 SSH 连接或某些终端模拟器如 Xshell、SecureCRT里按AltxEmacs 没有调出命令输入框反而插入了一个奇怪的字符或者焦点跳到了终端菜单栏。原因终端模拟器默认把 Alt 键用作“发送 Escape 前缀”或“激活菜单栏”没有把 Alt 键事件传给 Emacs。这是终端环境的使用习惯问题不是 Emacs 安装出错了——图形界面下 Alt 键通常工作正常问题只在终端里存在。解决两个办法。第一种是在终端软件设置里找到类似“Alt 作为 Meta 键”的选项并勾选。第二种是彻底绕开 Alt 键用 Esc 键代替按一下 Esc然后快速按 x效果等同于M-x。注意 Esc 键要求先按下再松开后按的键必须跟在后面不能同时按压。我个人的肌肉记忆是终端里一律用 Esc 代替 Meta不折腾终端配置记起来也简单。4.5 安装后 emacs 命令找不到现象make install顺利完成没有报错但关闭终端重新打开后输入emacsshell 提示command not found。原因使用了自定义--prefix安装路径后该路径没有加入 PATH 环境变量。最常见的是默认终端会话不会自动把/usr/local/emacs-23.4/bin加进 PATH需要手动配置。解决确认实际安装路径然后把它加入 PATH。编辑/etc/profile或~/.bashrc加上export PATH/usr/local/emacs-23.4/bin:$PATHsource 后验证which emacs。4.6 配置了 .emacs 文件后启动报错现象按照网上的教程写了一个~/.emacs配置文件再次启动 Emacs 时直接报错或者启动后显示一堆 Warning甚至直接闪退。原因配置文件里用了当前版本不支持的函数或语法。Emacs Lisp 在不同版本之间接口变化很大网上大量教程是针对 Emacs 24/25/26 写的里面的函数在 23.4 上可能压根不存在。解决先用emacs -Q跳过配置文件启动确认二进制本身无问题。然后逐段注释配置文件二分定位出错行。在 Emacs 23.4 上特别要注意package.el相关配置——这个内置包管理功能到 Emacs 24 才正式加入23.4 只有早期实验版本甚至没有网上教程里那些(require package)的写法大概率直接报错。另外用emacs --debug-init启动可以看到完整的错误堆栈比肉眼排查快得多。5. 让 Emacs 更适合长期使用我的 .emacs 最小配置模板安装只是开始真正让 Emacs 好用的是初始化配置。以下这份~/.emacs配置模板是我在 Redhat 系服务器上反复打磨过的不依赖任何第三方包用 Emacs 23.4 自带的能力就能跑起来开箱即用。;;; .emacs -- 服务器端 Emacs 23.4 最小配置 ;; 关闭启动画面省去每次按 q 的步骤 (setq inhibit-startup-message t) ;; 显示行号Emacs 23.4 用 linum-mode24 才支持 display-line-numbers-mode (require linum) (global-linum-mode 1) ;; 显示当前行高亮定位光标位置 (global-hl-line-mode 1) ;; 括号匹配高亮写 Lisp 和 C 的时候太重要了 (show-paren-mode 1) ;; 光标移动到行尾时自动插入配对括号 (setq electric-pair-mode nil) ; 23.4 没有 electric-pair-mode保持默认即可 ;; 默认缩进 4 空格符合大多数 C/C 项目的习惯 (setq c-basic-offset 4) (setq default-tab-width 4) (setq indent-tabs-mode nil) ; 用空格替代 Tab避免跨编辑器缩进错乱 ;; 显示时间M-x display-time 或直接开启 (display-time-mode 1) (setq display-time-24hr-format t) ;; 自动加载最近打开的文件 (savehist-mode 1) ;; 设置备份文件目录避免同目录下生成一堆 ~ 结尾的垃圾文件 (setq backup-directory-alist ((. . ~/.emacs.d/backups))) (setq auto-save-file-name-transforms ((.* ~/.emacs.d/auto-save/ t)))这份配置里最核心的一行是setq c-basic-offset 4。在服务器上改 C/C 代码时缩进风格不一致会直接引爆同事间的代码评审战。indent-tabs-mode nil强制用空格代替 Tab能保证任何编辑器打开都是一个样不会因为 Tab 宽度不同而错乱。backup-directory-alist也是个容易被忽略的点默认情况下每次保存文件 Emacs 都会生成一个文件名~的备份文件丢在原目录几个月下来目录会变得乌烟瘴气重定向到~/.emacs.d/backups能让工作目录保持干净。注意这个目录要提前创建否则 Emacs 会静默跳过备份功能——mkdir -p ~/.emacs.d/backups ~/.emacs.d/auto-save先跑一遍。配置写好后验证步骤必须有先emacs -Q -nw-nw表示纯终端模式确认基础二进制正常再正常执行emacs看配置是否生效。如果配置语法错误emacs --debug-init会启动后直接弹出错误栈能看到具体是哪一行的哪个函数有问题这个调试参数比盲猜效率高一个量级。从工程角度看Emacs 的价值不只在编辑本身。它内置的 Lisp 解释器让它变成了一个可编程的工作台——p 服务器上临时改个文本、批量处理日志、写个小脚本管理配置文件都在这一个环境里解决不用来回切换工具。但这一切的前提是你把它正确装好、配置到顺手。我在每台新服务器上装 Emacs 都会强制走一遍make distclean → ./configure → make → src/emacs -Q的验证链编译器版本换了、系统架构变了、依赖库缺了在这一步都会显形。希望这篇笔记能帮你少踩几个坑把命令行里的编辑体验真正立起来也希望你能在 Emacs 的广阔世界里找到自己的编辑节奏。本文还有配套的精品资源点击获取
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。