pacman下载时经常出现Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds

问题

我在manjaro系统上使用pacman下载软件的时候,经常出现以下报错:

错误:无法从 mirrors.tuna.tsinghua.edu.cn : Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds 获取文件 'wps-office-11.1.0.9604-1-x86_64.pkg.tar.zst'###########################################-------------------------------]  67%
警告:无法获取某些文件
错误:无法提交处理 (下载数据库出错)
发生错误,没有软件包被更新。

初步诊断了一下,是下载速度太慢了。但是很神奇的是,我直接访问mirrors.tuna.tsinghua.edu.cn速度还是很快的。

解决方案

我让pacman使用外部下载器来解决这个问题(似乎是解决了)。

具体方法

修改文件/etc/pacman.conf。我使用了vim来修改,记得非roor用户需要用sudo
在该文件内有如下两行:

#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u

这两行都是注释掉的,把其中一行注释取消掉(删除#)就行了。
其中第一行是使用curl作为下载器,第二行是wget
我选择的是wget

新的问题

执行sudo pacman -Syu之后,大概会出现如下信息:

:: 正在同步软件包数据库...
--2020-07-10 08:48:08--  https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/core/x86_64/core.db
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)... 202.120.58.155
正在连接 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)|202.120.58.155|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:174157 (170K) [application/x-gzip]
正在保存至: “/var/lib/pacman/sync/core.db.part”

/var/lib/pacman/sync/core.db.part                              100%[====================================================================================================================================================>] 170.08K  --.-KB/s  用时 0.1s    

2020-07-10 08:48:09 (1.53 MB/s) - 已保存 “/var/lib/pacman/sync/core.db.part” [174157/174157])

--2020-07-10 08:48:09--  https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/core/x86_64/core.db.sig
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)... 202.120.58.155
正在连接 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)|202.120.58.155|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 404 Not Found
2020-07-10 08:48:09 错误 404:Not Found。

--2020-07-10 08:48:11--  https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/extra/x86_64/extra.db
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)... 202.120.58.155
正在连接 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)|202.120.58.155|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2127897 (2.0M) [application/x-gzip]
正在保存至: “/var/lib/pacman/sync/extra.db.part”

/var/lib/pacman/sync/extra.db.part                             100%[====================================================================================================================================================>]   2.03M  7.02MB/s  用时 0.3s    

2020-07-10 08:48:12 (7.02 MB/s) - 已保存 “/var/lib/pacman/sync/extra.db.part” [2127897/2127897])

--2020-07-10 08:48:12--  https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/extra/x86_64/extra.db.sig
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)... 202.120.58.155
正在连接 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)|202.120.58.155|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 404 Not Found
2020-07-10 08:48:12 错误 404:Not Found。

--2020-07-10 08:48:14--  https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/community/x86_64/community.db
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)... 202.120.58.155
正在连接 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)|202.120.58.155|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:6185653 (5.9M) [application/x-gzip]
正在保存至: “/var/lib/pacman/sync/community.db.part”

/var/lib/pacman/sync/community.db.part                         100%[====================================================================================================================================================>]   5.90M  9.15MB/s  用时 0.6s    

2020-07-10 08:48:15 (9.15 MB/s) - 已保存 “/var/lib/pacman/sync/community.db.part” [6185653/6185653])

--2020-07-10 08:48:15--  https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/community/x86_64/community.db.sig
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)... 202.120.58.155
正在连接 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)|202.120.58.155|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 404 Not Found
2020-07-10 08:48:15 错误 404:Not Found。

--2020-07-10 08:48:17--  https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/multilib/x86_64/multilib.db
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)... 202.120.58.155
正在连接 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)|202.120.58.155|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:199917 (195K) [application/x-gzip]
正在保存至: “/var/lib/pacman/sync/multilib.db.part”

/var/lib/pacman/sync/multilib.db.part                          100%[====================================================================================================================================================>] 195.23K  --.-KB/s  用时 0.1s    

2020-07-10 08:48:17 (1.69 MB/s) - 已保存 “/var/lib/pacman/sync/multilib.db.part” [199917/199917])

--2020-07-10 08:48:17--  https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/multilib/x86_64/multilib.db.sig
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)... 202.120.58.155
正在连接 mirrors.sjtug.sjtu.edu.cn (mirrors.sjtug.sjtu.edu.cn)|202.120.58.155|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 404 Not Found
2020-07-10 08:48:18 错误 404:Not Found。

--2020-07-10 08:48:20--  https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/x86_64/archlinuxcn.db
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
正在连接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1489098 (1.4M) [application/octet-stream]
正在保存至: “/var/lib/pacman/sync/archlinuxcn.db.part”

/var/lib/pacman/sync/archlinuxcn.db.part                       100%[====================================================================================================================================================>]   1.42M  4.83MB/s  用时 0.3s    

2020-07-10 08:48:20 (4.83 MB/s) - 已保存 “/var/lib/pacman/sync/archlinuxcn.db.part” [1489098/1489098])

--2020-07-10 08:48:20--  https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/x86_64/archlinuxcn.db.sig
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
正在连接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 404 Not Found
2020-07-10 08:48:21 错误 404:Not Found。

:: 正在进行全面系统更新...

与一开始简直是画风突变。
看到下面,会出现一个404错误,大致如下:

--2020-07-10 08:48:20--  https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/x86_64/archlinuxcn.db.sig
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
正在连接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 404 Not Found
2020-07-10 08:48:21 错误 404:Not Found。

目前还不知道错误的原因是什么,访问https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/x86_64/archlinuxcn.db.sig也的确是404。不过似乎不影响使用,于是我就没管了。

[Running] cd "c:\Users\wangjiahao\Desktop\VScode\" && g++ hello.cpp -o hello && "c:\Users\wangjiahao\Desktop\VScode\"hello D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o: Invalid argument D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/crtbegin.o: Invalid argument D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lstdc++: No such file or directory D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmingw32: No such file or directory D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgcc: No such file or directory D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmoldname: No such file or directory D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmingwex: No such file or directory D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmsvcrt: No such file or directory D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lkernel32: No such file or directory D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lpthread: No such file or directory D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -ladvapi32: No such file or directory D:/浏览器/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lshell32: No such file or director
最新发布
03-15
<think>嗯,用户遇到了MinGW编译C++程序链接器找不到crt2.o和其他库文件的问题。我需要先理解这些错误的原因。根据用户提供的引用[1]和[2],看起来类似的问题通常是由于MinGW环境配置不正确或缺少必要的库文件导致的。比如,引用[1]中提到找不到-lmsvcrt的解决方法,需要安装支持32和64位的MinGW-w64。而引用[2]中的问题则是缺少MySQL库,用户尝试调整路径但未成功。 首先,crt2.o是C运行初始化文件的一部分,属于MinGW的核心组件。如果链接器找不到它,可能是因为安装的MinGW版本不完整或路径配置错误。同样,stdc++是GNU的标准C++库,缺少的话可能是没有安装对应的库或者路径没有正确包含。 接下来,我需要考虑可能的解决方案。用户可能没有正确安装完整的MinGW-w64工具链,或者环境变量没有正确设置。可能需要检查安装路径,确认是否存在这些库文件。此外,用户可能使用了错误的架构版本,比如需要32位但安装了64位,或者相反。 另外,用户提到的其他库如mingw32、msvcrt等,这些都是MinGW的基本依赖库,如果安装不完整,这些文件可能会缺失。解决方法可能包括重新安装MinGW-w64,并确保选择正确的架构和异常处理机制(如seh和sjlj)。同,检查系统环境变量中的PATH是否包含了MinGW的bin目录,以及LIBRARY_PATH是否包含库目录。 还有可能需要检查编译命令是否正确,是否漏掉了某些参数或者指定了错误的库路径。用户可能在编译没有正确配置链接器选项,或者项目配置有误。此外,使用MSYS2来管理MinGW环境可能更可靠,因为它提供了包管理工具,可以方便地安装所需的库。 总结下来,解决步骤可能包括:重新安装MinGW-w64完整版,检查路径配置,确认库文件存在,使用正确的架构,以及可能的包管理器安装缺失的库。此外,用户可能需要更新工具链或调整编译参数,确保所有依赖库都被正确链接。</think>### 解决MinGW链接器找不到crt2.o等库文件的方法 #### 问题分析 编译C++程序出现`ld.exe cannot find crt2.o, stdc++, mingw32, msvcrt`等错误,通常是由于以下原因: 1. **MinGW安装不完整**,缺少核心运行库或头文件。 2. **环境变量配置错误**,导致链接器无法定位库文件路径。 3. **架构不匹配**(如32位与64位混用)[^1]。 4. **库文件命名或版本冲突**,例如`libstdc++`未正确安装。 --- #### 解决方案步骤 1. **重新安装完整MinGW-w64** - 从官方源下载支持32/64位的**MinGW-w64**,选择与系统匹配的版本: - **架构**:`x86_64`(64位)或`i686`(32位) - **异常处理**:`seh`(64位推荐)或`sjlj`(32位兼容) - 下载地址:[MinGW-w64 - SourceForge](https://sourceforge.net/projects/mingw-w64/files/) - 安装勾选所有基础组件(如`gcc`, `g++`, `binutils`, `mingw32-runtime`)。 2. **检查库文件路径** - 确认MinGW安装目录下存在缺失的库文件(如`crt2.o`位于`mingw/lib`或`mingw/x86_64-w64-mingw32/lib`)。 - 若文件缺失,手动复制或通过包管理器安装: ```bash # 使用MSYS2的包管理器(推荐) pacman -S mingw-w64-ucrt-x86_64-gcc ``` 3. **配置环境变量** - 添加MinGW的`bin`和`lib`目录到系统环境变量: ```bash # 示例(路径需替换为实际安装位置) export PATH="/mingw64/bin:$PATH" export LIBRARY_PATH="/mingw64/lib:$LIBRARY_PATH" ``` - 在Windows系统中,通过“系统属性→高级→环境变量”设置。 4. **验证编译命令** - 确保编译命令包含必要的库路径和链接参数: ```bash g++ main.cpp -L/mingw64/lib -lstdc++ -static -o output.exe ``` 5. **使用MSYS2替代原生MinGW** - MSYS2提供更稳定的包管理,可避免手动配置路径: ```bash pacman -Syu # 更新包列表 pacman -S mingw-w64-x86_64-toolchain # 安装完整工具链 ``` --- #### 关键注意事项 - 若问题涉及`-lmsvcrt`或`-lkernel32`,需确保安装勾选了Windows API支持[^1]。 - **避免混合使用不同版本的MinGW**,可能导致符号冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋子桓(SongZihuan)

谢谢你的打赏!我将继续努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值