【备忘录】新版linux qq启动报错:非法指令(核心已转储)、illegal instruction (core dumped)
一、安装后,linuxqq无法启动;二、更新后,linuxqq无法启动;三、找不到目录,更新3.2.3后,旧方法无法适配文件目录,仍然非法指令。
一、安装后,linuxqq无法启动。
先上图:
原因介绍:我的旧电脑是AMD处理器,型号是速龙II x4 641。因为太老,导致有些指令集不支持,例如sse3、sse4.*。(猜测:至于linux qq能安装却不能运行的原因,可能与此有关。)
ecs-user@A55MLC2:~$ cat /proc/cpuinfo|grep flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate vmmcall arat npt lbrv svm_lock nrip_save pausefilter
解决办法:本地编译,并安装libvips。
具体操作:(以下命令是我的主机需要执行的,具体情况请具体分析)
1.下载libvips源码包,https://github.com/libvips/libvips/releases
2.解压缩
tar xzvf libvips-8.14.2.tar.gz
3.按照README.md和meson_options.txt安装依赖(或者在https://github.com/libvips/libvips获取简要依赖信息)
我的安装依赖情况:
sudo apt install meson build-essential pkg-config libglib2.0-dev libexpat1-dev libgirepository1.0-dev
4.配置meson选项,然后安装。
#配置的安装目录必须是QQ默认的/usr/lib/x86_64-linux-gnu/,所以在ubuntu下,--prefix对应的目录是/usr
meson setup build --prefix /usr
cd build
meson compile
meson test
sudo meson install
5.关键步骤:(注意文件名,根据具体情况改命令中的路径和文件名),备份/opt/QQ/resources/app/sharp-lib/libvips-cpp.so.42,复制libvips-cpp.so.*文件到QQ程序目录并覆盖原libvips-cpp.so.42文件
sudo cp /opt/QQ/resources/app/sharp-lib/libvips-cpp.so.42 /opt/QQ/resources/app/sharp-lib/libvips-cpp.so.42.bk sudo cp /usr/lib/x86_64-linux-gnu/libvips-cpp.so.42.16.2 /opt/QQ/resources/app/sharp-lib/libvips-cpp.so.42
6.启动新版linux qq
7.完成
二、更新后,linuxqq无法启动。
1.复制libvips-cpp.so.42.16.2到.config指定目录(其中3.1.2-12912目录,为更新的版本目录)
#其中3.1.2-12912目录,为更新的版本目录 sudo cp /usr/lib/x86_64-linux-gnu/libvips-cpp.so.42.16.2 /home/ecs-user/.config/QQ/versions/3.1.2-12912/sharp-lib/libvips-cpp.so.42
2.启动qq
三、找不到目录,更新3.2.3后,旧方法无法适配文件目录,仍然非法指令。
更新3.2.3-18968版本后,使用第二节的方法失效了,.config中没有新的版本目录,而且还是启动无反应。
1.(注意文件名,根据具体情况改命令中的路径和文件名),再次备份/opt/QQ/resources/app/sharp-lib/libvips-cpp.so.42,复制libvips-cpp.so.*文件到QQ程序目录并覆盖原libvips-cpp.so.42文件。
sudo cp /opt/QQ/resources/app/sharp-lib/libvips-cpp.so.42 /opt/QQ/resources/app/sharp-lib/libvips-cpp.so.42.bk2 sudo cp /usr/lib/x86_64-linux-gnu/libvips-cpp.so.42.16.2 /opt/QQ/resources/app/sharp-lib/libvips-cpp.so.42
即可。