做人总得有点梦想,就算是咸鱼也得是最咸的那条(笑)。
最近开始试着玩Linux,被CentOS虐的不要不要的...
不过探索的过程总是充满乐趣hhhhh(好吧崩的我也是乐呵乐呵的)
话说最近看到Windows上很火的Wox,确实从效率到使用体验到延展性都不错,就考虑往我这近乎裸奔的CentOS上也安上一个Launcher。
找了找CentOS平台的,发现了一款风格很类似的:Mutate
Emmmmm.....好像Launcher本来就该长这样。
于是兴高采烈地跑去安装啦~
首先是需要的依赖:
Dependencies
- boost-regex
- QT5
- GTK2 (for application icon lookup)
- ICU
- libsm
- libxkbcommon
之后就是简单的yum啦~
sudo yum -y install https://github.com/qdore/Mutate/releases/download/v2.3/Mutate-2.3-0.fc21.x86_64.rpm
/usr/share/mutate/setup
嗯... ...然后就出错了... ...
错误:软件包:Mutate-2.3-0.fc21.x86_64 (/Mutate-2.3-0.fc21.x86_64)
需要:libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
错误:软件包:Mutate-2.3-0.fc21.x86_64 (/Mutate-2.3-0.fc21.x86_64)
需要:libboost_regex.so.1.55.0()(64bit)
好像是GCC缺了点什么,那就看看吧
strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
来吧让我们看看我们有啥!
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
...
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH
好吧...好像他要3.4.20来着,好巧...我是3.4.19.....
那就装呗~找到libstdc++.so.6安装的网址(下载地址-进去找镜像)
下了一个libstdc++-7.2.1-4,这回安上可就够新了
走你!!!
# rpm -ivh libstdc++-7.2.1-4.fc28.i686.rpm
警告:libstdc++-7.2.1-4.fc28.i686.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ********: NOKEY
错误:依赖检测失败:
libc.so.6(GLIBC_2.18) 被 libstdc++-7.2.1-4.fc28.i686 需要
好吧华丽丽的失败了,需要2.18版本的libc支持,不用看肯定是我没支持到。
于是又跑去了libc下载(镜像下载地址)翻下来一个2.18
- 解压到任意目录
- 进入目录并给他创建build路径(mkdir build)
- 进入build进行配置(../configure --prefix=/usr) Ps:两个点哦
- make -j8(具体数量自己配置)
- make install
编译安装完了,再看看
strings /usr/lib/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
...
GLIBCXX_3.4.19
GLIBC_2.3
GLIBC_2.0
GLIBC_2.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.3.2
GLIBC_2.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
OS同学,我的2.18呢!!!!为什么glib版本这么老!!!
不知道是不是因为要重启,但是我突然感觉或许直接升级一个GCC全家桶会好一点...(心累)
这是GCC各个Mirrors的地址,我选择是进入的日本域下的GCC-7.1.0(够新了吧)
于是又是老一套:做build、configure、make、make install(make的时间基本够我出去吃饭的)
终于build和install完了,重启一下
# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/lto-wrapper
目标:x86_64-pc-linux-gnu
配置为:./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
线程模型:posix
gcc 版本 7.1.0 (GCC)
高兴的正准备欢呼,随手一看
# strings /usr/lib/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
...
GLIBCXX_3.4.19
GLIBC_2.3
GLIBC_2.0
GLIBC_2.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.3.2
GLIBC_2.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
没有任何变化...
上网搜了一下应该重新建立软链接,于是跟着作
$ rm -rf /lib64/libc.so.6 // 先删除先前的libc.so.6软链
$ ln -s /opt/glibc-2.18/lib/libc-2.14.so /lib64/libc.so.6
鼓掌~这次彻底玩崩了!移除了libc.so.6之后我连ln都不能用了!!!
咋办咋办!!只能江湖救急了
ldconfig —— 这是一句很神奇的命令
来自博客:ldconfig命令的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib.so),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
后来又来来回回改,毁了,这次又把ld搞坏了......无论执行什么都是
symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link tim
又是翻了一堆博客,原来还有救:
# sln /usr/lib64/ld-2.18.so /usr/lib64/ld-linux-x86-64.so.2
行吧那还是回来怼libc
开始加软链:
ln -s /opt/glibc-2.18/lib/libc-2.14.so /lib64/libc.so.6
最后....连ls都不能用了,更别提yum、gcc了,我是不是该重装系统了??
【更改GLIBC出错后如何急救系统,请看这里。Mutate:我还会回来的】