背景
编译c++程序的时候,提示链接失败,错误如下:
clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
[24/25] Linking CXX executable samples/xxx
ninja: build stopped: subcommand failed.
此处不过多介绍,反正就是链接器需要进行大量链接导致的资源不足。 ok,那我们换成mold这个轻量级链接器,听说它又快又省资源,简直无敌。。。
mold地址:https://github.com/rui314/mold
下载mold链接器
下载前先搜索,OK,pacman的源中是存在这个包的,那就冲。
sudo pacman -Si mold
Repository : extra
Name : mold
Version : 2.1.0-1
Description : A Modern Linker
Architecture : x86_64
URL : https://github.com/rui314/mold
Licenses : MIT
Groups : None
Provides : None
Depends On : glibc gcc-libs mimalloc openssl zlib tbb zstd
Optional Deps : None
Conflicts With : None
Replaces : None
Download Size : 2.30 MiB
Installed Size : 19.09 MiB
Packager : Frederik Schwan <freswa@archlinux.org>
Build Date : Sun 13 Aug 2023 07:35:32 PM CST
Validated By : MD5 Sum SHA-256 Sum Signature
下载
好家伙下载直接报错,错误信息如下
error: failed retrieving file 'mold-2.1.0-1-x86_64.pkg.tar.zst' from mirrors.ustc.edu.cn : The requested URL returned error: 404
warning: failed to retrieve some files
error: failed to commit transaction (failed to retrieve some files)
Errors occurred, no packages were upgraded.
stable换testing
怀疑是不是源的问题,准备把标准源换成testing试试。
1、sudo vim pacman-mirrors.conf
2、stable修改成testing
3、pacman下载还是失败
查看源网站
分别查看stable和testing下对应的mold包,发现都没有2.1.0版本的mold. 只有低版本的mold。
cat /etc/pacman.d/mirrorlist
## Country : China
Server = https://mirrors.ustc.edu.cn/manjaro/stable/$repo/$arch
用的中科大的源,去源网站找一下mold发现确实没有mold 2.1.0。
查看mold的适用版本
mold官方github查看下适用于本系统的mold地址,确实是2.1.0。 更无语的是,同事前段时间还顺利从pacman安装了mold 2.1.0版本,奇怪了。
推测是源网站管理资源的问题,说不定是手滑给删除了呢。。。
去arch repo里面查找
版本和时间都很nice,可以冲
pacman从下载包安装
sudo pacman -U mold-2.1.0-1-x86_64.pkg.tar.zst
# 查看
mold --help
结果非常丝滑。有时候感觉自己的思路还是不够开阔,在源地址那边死磕了挺久,应该早点去源网站看看的。发现源网站没有这个包,那就火速去arch仓库找找就好了。上次安装个ubuntu的包也是类似的手段,希望以后遇到这种问题能秒解,奥利给!
end