Linux Steam: 文明6游戏无法启动的问题解决
其实是游戏(启动器)自带的部分库与系统库冲突了,解决办法:
- 不使用文明6的启动器,直接启动游戏
cd '游戏游戏安装目录'/GameGuide/lib
mv Civ6 Civ6.bak
mv Civ6Sub Civ6
- 尝试用系统库替代冲突的库,方法有很多种,这里说两种:
- 将游戏安装目录下的 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函数时,调用的其实是我们自定义的函数