ArchLinux下MikTeX的pdflatex出现segmentation fault问题求助
MikTeX pdflatex 在ArchLinux更新后出现Segmentation Fault问题排查
问题现象
ArchLinux系统更新后,原本指向MikTeX安装目录(/home/***/usr/bin/Miktex/bin/pdflatex)的pdflatex命令无法正常工作:
- 执行
pdflatex、pdflatex main或pdflatex main.tex时,反复触发错误:segmentation fault (core dumped) - 偶尔尝试十几次后编译器能正常启动,此时输入文件名可完成编译,编译过程无异常:
后续编译输出示例:This is pdfTeX, Version 3.141592653-2.6-1.40.24 (MiKTeX 22.10) (preloaded format=pdflatex.fmt) restricted \write18 enabled. **entering extended mode (main.tex LaTeX2e <2022-11-01> patch level 1 L3 programming layer <2023-02-02> (/home/***/.miktex/texmfs/install/tex/latex/koma-script/scrartcl.cls Document Class: scrartcl 2022/10/12 v3.38 KOMA-Script document class (article) (/home/***/.miktex/texmfs/install/tex/latex/koma-script/scrkbase.sty (/home/***/.miktex/texmfs/install/tex/latex/koma-script/scrbase.sty (/home/***/.miktex/texmfs/install/tex/latex/koma-script/scrlfile.sty (/home/***/.miktex/texmfs/install/tex/latex/koma-script/scrlfile-hook.sty (/home/***/.miktex/texmfs/install/tex/latex/koma-script/scrlogo.sty))) (/home/***/.miktex/texmfs/install/tex/latex/graphics/keyval.sty))) ...
补充排查信息
查看dmesg日志得到以下错误:
traps: pdflatex[7362] general protection fault ip:7fb0976d81a8 sp:7ffcc465b120 error:0 in libboost_locale.so.1.81.0[7fb0976bc000+5f000]
系统更新时将libboost_locale.so.1.80.0升级为libboost_locale.so.1.81.0.1,因MikTeX找不到旧版本库无法编译,手动创建了软链接:
/usr/lib/libboost_locale.so.1.80.0 -> libboost_locale.so.1.81.0
后续还为libboost_chrono.so.1.80、libboost_thread.so.1.80创建了类似链接,后得知此操作有误。
问题根源
- Boost库的版本号属于SONAME(共享对象名称),不同版本的Boost库之间存在二进制不兼容问题。MikTeX编译时依赖的是Boost 1.80的ABI(应用二进制接口),手动将1.80的链接指向1.81版本,会导致pdflatex调用库函数时出现参数不匹配、内存布局错误等问题,最终触发Segmentation Fault或General Protection Fault。
- 偶尔能成功启动的情况是概率性的内存访问巧合,并非真正解决了依赖问题。
解决步骤
1. 删除手动创建的错误软链接
sudo rm /usr/lib/libboost_locale.so.1.80.0 sudo rm /usr/lib/libboost_chrono.so.1.80 sudo rm /usr/lib/libboost_thread.so.1.80
2. 安装对应版本的Boost库
通过ArchLinux的AUR安装Boost 1.80版本(以yay为例):
yay -S boost1.80
安装完成后,系统会自动提供MikTeX所需的libboost_locale.so.1.80.0等库文件。
3. 更新或重新安装MikTeX
- 尝试更新MikTeX所有组件,确保依赖与系统库兼容:
miktex update --all - 如果更新无效,完全卸载当前MikTeX后重新安装最新版本,新版本通常会适配较新的系统库版本。
4. 切换到系统TeX发行版(可选)
ArchLinux官方仓库提供的TeX Live兼容性更好,无需手动处理依赖:
sudo pacman -S texlive-most
安装后直接使用系统自带的pdflatex命令即可。
内容的提问来源于stack exchange,提问作者Ekla HSV
相关产品推荐
相关产品推荐

