无root权限在CentOS7编译支持X的Emacs29.x的问题咨询
在无root权限的CentOS 7上编译完整功能的Emacs 29.4
可以在用户目录下编译安装所需依赖库,通过环境变量让GCC和Emacs的configure脚本识别到这些库的位置,从而编译出完整功能的版本,具体步骤如下:
1. 准备用户级依赖安装目录
先创建一个本地目录存放所有自行编译的库,避免系统路径权限问题:
export USER_LOCAL="/users/<username>/local" mkdir -p "$USER_LOCAL"
2. 设置环境变量,让工具链识别用户目录
配置编译器、链接器和pkg-config的搜索路径,确保后续编译的依赖能被找到:
export PATH="$USER_LOCAL/bin:$PATH" export LD_LIBRARY_PATH="$USER_LOCAL/lib:$USER_LOCAL/lib64:$LD_LIBRARY_PATH" export CFLAGS="-I$USER_LOCAL/include" export LDFLAGS="-L$USER_LOCAL/lib -L$USER_LOCAL/lib64" export PKG_CONFIG_PATH="$USER_LOCAL/lib/pkgconfig:$USER_LOCAL/lib64/pkgconfig:$PKG_CONFIG_PATH"
建议把这些环境变量添加到你的~/.bashrc或~/.zshrc中,避免每次重新设置。
3. 编译安装缺失的依赖库
编译libXpm
下载libXpm的源码包(如libXpm-3.5.17.tar.gz),解压后执行:
tar xf libXpm-3.5.17.tar.gz cd libXpm-3.5.17 ./configure --prefix="$USER_LOCAL" make -j$(nproc) make install cd ..
编译giflib(替代libungif)
下载giflib源码包(如giflib-5.2.1.tar.gz),解压后执行:
tar xf giflib-5.2.1.tar.gz cd giflib-5.2.1 ./configure --prefix="$USER_LOCAL" make -j$(nproc) make install cd ..
编译libtiff
下载libtiff源码包(如libtiff-4.6.0.tar.gz),解压后执行:
tar xf libtiff-4.6.0.tar.gz cd libtiff-4.6.0 ./configure --prefix="$USER_LOCAL" --disable-static make -j$(nproc) make install cd ..
4. 编译Emacs 29.4
回到Emacs源码目录,执行configure命令,指定依赖库的路径:
./configure --prefix=/users/<username>/.emacs.d --bindir=/users/<username>/bin \ --with-xpm="$USER_LOCAL" \ --with-gif="$USER_LOCAL" \ --with-tiff="$USER_LOCAL"
如果仍需跳过X toolkit,可追加--with-x-toolkit=no参数。
配置通过后,编译并安装:
make -j$(nproc) make install
验证安装
执行/users/<username>/bin/emacs --version,确认版本为29.4且功能完整。
内容的提问来源于stack exchange,提问作者Analog Moose
相关产品推荐
相关产品推荐

