Linux Steam: 文明6游戏无法启动的问题解决

其实是游戏(启动器)自带的部分库与系统库冲突了,解决办法:

  1. 不使用文明6的启动器,直接启动游戏
cd '游戏游戏安装目录'/GameGuide/lib
mv Civ6 Civ6.bak
mv Civ6Sub Civ6
  1. 尝试用系统库替代冲突的库,方法有很多种,这里说两种:
  • 将游戏安装目录下的 GameGuide/lib 目录中的libfreetype.so.6库备份后替换为系统的库
cd '游戏游戏安装目录'/GameGuide/lib
mv libfreetype.so.6 libfreetype.so.6.bak
cp /usr/lib/libfreetype.so.6 .
  • 使用LD_PRELOAD环境变量,具体见下方

以下部分转载自 https://www.cnblogs.com/ieeqc/p/14218241.html CC-BY-NC-SA

Linux Steam: 文明6, 英雄连等游戏无法启动的问题解决

文明6

关闭Steam并输入以下命令打开steam

LD_PRELOAD=/usr/lib/libfreetype.so steam

打开文明6的开发者模式:

打开以下的文件, 并修改 EnableDebugMenu 0 为 EnableDebugMenu 1

/home/$user_name/.local/share/aspyr-media/Sid Meier’s Civilization VI/AppOptions.txt

英雄连 II

缺少libpcre.so.3: 将/usr/lib/libpcre.so链接到/usr/lib64/libpcre.so.3搞定

ln -s /usr/lib/libpcre.so /usr/lib64/libpcre.so.3

缺少liggconf-2.so.4: 安装gconf

sudo pacman -S gconf

LD_PRELOAD,是个环境变量,用于动态库的加载,动态库加载的优先级最高,一般情况下,其加载顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/lib>/usr/lib。程序中我们经常要调用一些外部库的函数,以malloc为例,如果我们有个自定义的malloc函数,把它编译成动态库后,通过LD_PRELOAD加载,当程序中调用malloc函数时,调用的其实是我们自定义的函数