Linux tar 报错 `/'

本文介绍在使用tar命令进行文件归档时遇到的“Removingleading`/'frommembernames”错误,并提供了解决方案。通过正确使用-f选项和-P参数,可以避免tar命令移除文件名前导斜杠的问题。

今天使用tar命令归档文件的时候一直提示:“tar: Removing leading `/' from member names”

[root@liugang usr]# tar cjf /usr/liugang/liu.tar.bz2 /usr/local/
tar: Removing leading `/' from member names

这里使用-j表示bz2压缩,如果是gzip压缩,则需要使用-z参数

然后进行网上搜索得到答案 tar命令-f选项后面必须接文件,不能接其他的。

-P, --absolute-names

              don’t strip leading ‘/’s from file names

biu 试一下 

[root@liugang usr]# tar cjPf /usr/liugang/liu.tar.bz2 /usr/local/
[root@liugang usr]# ls /usr/liugang/
liu.tar.bz2
成功啦

<think>好的,我现在需要解决用户在运行gdb时遇到的错误:“/usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by ./gdb)”。首先,我得分析这个错误的原因。 这个错误通常是因为系统中安装的libstdc++.so.6库版本过旧,无法满足gdb所需的GLIBCXX_3.4.22版本。用户可能是在较旧的系统上运行了较新版本的gdb,导致动态库不兼容。 接下来,我需要指导用户如何确认问题。第一步是检查当前libstdc++支持的GLIBCXX版本。用户可以通过运行`strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIBCXX`来查看已安装的版本列表。如果输出中没有GLIBCXX_3.4.22,说明确实缺少这个版本。 然后,考虑解决方案。可能的解决方法包括升级系统、安装更新的libstdc++库,或者从源码编译gdb。但需要根据用户的具体情况来选择。例如,如果系统版本较旧,升级整个系统或添加较新的软件源来更新libstdc++可能更合适。如果升级系统不可行,可能需要手动下载或编译高版本的libstdc++,但需要注意兼容性问题,避免导致其他程序崩溃。 此外,用户可能需要更新符号链接,确保libstdc++.so.6指向正确的版本。例如,安装新版本后,可能需要执行`sudo rm /usr/lib/arm-linux-gnueabihf/libstdc++.so.6``sudo ln -s /usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.28 /usr/lib/arm-linux-gnueabihf/libstdc++.so.6`(假设新版本是6.0.28)。 还需要提醒用户注意依赖关系,手动替换库文件可能存在风险,可能导致系统不稳定。因此,建议优先通过包管理器来安装更新。如果用户使用的发行版较旧,可能需要考虑升级到更新的版本,如Ubuntu 18.04或更高,或者Debian 10以上,这些版本通常包含所需的库版本。 最后,如果所有方法都无法解决问题,可能需要从源码编译gdb,并静态链接相关库,但这会增加复杂性。需要逐步指导用户操作,确保命令正确,并提醒备份重要数据,防止意外发生。</think>遇到这个错误是因为您的系统缺少`GLIBCXX_3.4.22`版本的C++标准库支持。这个问题通常是由于以下两个原因导致的: ### 第一步:确认问题 ```bash # 查看当前libstdc++支持的GLIBCXX版本 strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIBCXX ``` 如果输出结果中没有`GLIBCXX_3.4.22`,则说明您的系统libstdc++版本过低。 --- ### 解决方案 #### 方案一:更新libstdc++ 1. **通过软件源升级**(推荐) ```bash # 更新软件源 sudo apt update && sudo apt upgrade -y # 检查可用的libstdc++版本 apt list libstdc++* ``` 如果软件源中有新版本,直接通过`apt install`安装。 2. **手动安装新版libstdc++** - 下载对应架构的`.deb`包(例如从较新的Debian/Ubuntu仓库获取) - 解压并替换旧版本: ```bash # 下载示例(需替换实际URL) wget http://ftp.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.3.0-6_armhf.deb # 解压安装 sudo dpkg -i libstdc++6_8.3.0-6_armhf.deb ``` 3. **更新符号链接** ```bash sudo rm /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 sudo ln -s /usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.28 /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 ``` --- #### 方案二:降级GDB版本 ```bash # 卸载当前gdb sudo apt remove gdb # 安装旧版gdb(需确认版本兼容性) sudo apt install gdb=8.2-1 ``` --- #### 方案三:从源码编译GDB ```bash # 下载gdb源码 wget http://ftp.gnu.org/gnu/gdb/gdb-10.2.tar.gz tar xvf gdb-10.2.tar.gz cd gdb-10.2 # 配置并编译(静态链接libstdc++) ./configure --prefix=/usr/local/gdb-10.2 --with-static-standard-libraries make -j4 sudo make install ``` --- ### 关键注意事项 1. **系统版本兼容性**: Ubuntu 16.04或Debian 9等旧系统可能无法直接升级到包含`GLIBCXX_3.4.22`的libstdc++,建议考虑升级到Ubuntu 18.04+或Debian 10+。 2. **依赖关系风险**: 手动替换`libstdc++.so.6`可能导致其他程序崩溃,建议操作前备份系统。 3. **架构匹配性**: 确保下载的`.deb`包与您的CPU架构(此处为`armhf`)完全匹配。 --- ### 扩展建议 如果问题持续存在,可以尝试: ```bash # 查看gdb依赖的所有库 ldd $(which gdb) # 检查其他库是否也存在版本问题 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值