省流直接看黑体加粗
参考链接:解决Linux系统下,“/usr/bin/ld: 找不到 -lXXX”问题_-lxxf86vm-优快云博客
笨办法, 每次用 sudo apt-get install 安装 ros 有关的东西后, 都手动把这些Lib 文件复制到系统一定会访问的 /usr/lib:
sudo cp /opt/ros/kinetic/lib/lib* /usr/lib/
使用上述命令后出现
从你的命令和错误信息来看,问题仍然集中在符号链接和目录的处理上。以下是详细分析和解决方法:
---
### 问题分析
1. **符号链接问题**
错误信息:
```
cp: 无法通过符号链接'/usr/lib/libecl_devices.so' 进行操作
cp: 无法通过符号链接'/usr/lib/libecl_mobile_robot.so' 进行操作
```
- 这些错误表明 `/usr/lib/libecl_devices.so` 和 `/usr/lib/libecl_mobile_robot.so` 是符号链接。
- 当你使用 `cp -L` 时,`cp` 会尝试跟随符号链接并复制实际文件,但如果目标路径(`/usr/lib/`)中已经存在同名符号链接,`cp` 会尝试覆盖它们,但由于符号链接的特殊性,可能会导致操作失败。
2. **目录问题**
错误信息:
```
cp: 未指定 -r;略过目录'/opt/ros/noetic/lib/librviz_tutorial'
```
- `/opt/ros/noetic/lib/librviz_tutorial` 是一个目录,而 `cp` 默认不会复制目录,除非使用 `-r` 选项。
---
### 解决方法
#### 1. 处理符号链接
如果你希望覆盖 `/usr/lib/` 中的符号链接并复制实际文件,可以尝试以下方法:
- **删除目标路径中的符号链接**
在执行 `cp` 之前,先删除 `/usr/lib/` 中的符号链接:
```bash
sudo rm /usr/lib/libecl_devices.so /usr/lib/libecl_mobile_robot.so
```
然后重新运行 `cp` 命令:
```bash
sudo cp -L /opt/ros/noetic/lib/lib* /usr/lib/
```
- **强制覆盖符号链接**
如果目标路径中存在符号链接,`cp` 默认会报错。你可以使用 `-f` 选项强制覆盖:
```bash
sudo cp -Lf /opt/ros/noetic/lib/lib* /usr/lib/
```
#### 2. 处理目录
如果你希望复制 `/opt/ros/noetic/lib/librviz_tutorial` 目录及其内容,需要在 `cp` 命令中添加 `-r` 选项:
```bash
sudo cp -rL /opt/ros/noetic/lib/librviz_tutorial /usr/lib/
```
---
### 综合命令
如果你希望一次性解决符号链接和目录的问题,可以使用以下命令:
```bash
sudo cp -rLf /opt/ros/noetic/lib/lib* /usr/lib/
```
- `-r`:递归复制目录。
- `-L`:跟随符号链接并复制实际文件。
- `-f`:强制覆盖目标路径中的文件或符号链接。
---
### 注意事项
1. **备份数据**
在执行覆盖操作之前,建议备份 `/usr/lib/` 中的重要文件,以防意外丢失数据。
2. **检查符号链接**
如果你不确定符号链接的指向,可以使用 `ls -l` 检查:
```bash
ls -l /usr/lib/libecl_devices.so
ls -l /usr/lib/libecl_mobile_robot.so
```
3. **权限问题**
如果 `/usr/lib/` 中的文件或符号链接受保护,可能需要使用 `sudo` 提升权限。
---
通过以上方法,你应该能够成功复制文件并解决符号链接和目录的问题。如果还有其他问题,请随时告诉我!