You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:35:21