目录
- 一、环境/库
- 1.1 curl: error while loading shared libraries
- 1.2 调整Docker下载速度
- 1.3 由于没有公钥,无法验证下列签名:NO_PUBKEY的解决方法
- 1.4 Cmake 版本更新
- 1.5 cudnn问题,apt upgrade出现警告/sbin/ldconfig.real
- 1.6 conda环境导致的源码安装包问题
- 1.7 the provided PTX was compiled with an unsupported toolchain
- 二、ROS
- 2.1 使用其它工作空间的包,未加载其它工作空间的source
- 2.2 有多个.so文件同时被引用
- 2.3 PCL要求C++11及以上
- 2.4 error while loading shared libraries
- 三、系统问题
- 3.1 Windows+Ubuntu双系统,Win更新后Ubuntu引导项消失
- 3.2 Ubuntu启动后左上角光标闪烁,且出现snd_hda_intel cannot probe codecs的错误信息
- 3.3 Kernel panic - not syncing: Attempted to kill init!
- 3.4 惠普暗影精灵9/光影精灵9,无法拓展显示器
- 3.5 系统启动后进入(initramfs)
- 3.6 A stop job is running for session X of user XXX
- 3.7 Realtek 网卡没有网络连接图标
- 四、小工具
- 4.1 解压当前目录下所有 zip 压缩包到 zip 文件同名目录
一、环境/库
1.1 curl: error while loading shared libraries
- 在机器上查找丢失的共享库
find ~ -name libssl.so.1.0.0
得到返回值/home/huffie/anaconda3/pkgs/openssl-1.0.2p-h14c3975_0/lib/libssl.so.1.0.0
- 查看软件安装路径
which curl
得到返回值~/anaconda3/bin/curl,说明是使用anaconda安装的
- 建立软连接
ln -s /home/huffie/anaconda3/pkgs/openssl-1.0.2p-h14c3975_0/lib/libssl.so.1.0.0 ~/anaconda3/lib/libssl.so.1.0.0
- 同样的方法补全
libcrypto.so.1.0.0
ln -s /home/huffie/anaconda3/pkgs/openssl-1.0.2p-h14c3975_0/lib/libcrypto.so.1.0.0 ~/anaconda3/lib/libcrypto.so.1.0.0
1.2 调整Docker下载速度
- 备份配置文件
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.backup
- 打开配置文件,删除所有内容,并添加以下内容
sudo vim /etc/docker/daemon.json
{
"registry-mirrors" : ["https://docker.mirrors.ustc.edu.cn"]
}
1.3 由于没有公钥,无法验证下列签名:NO_PUBKEY的解决方法
(1)问题描述
今天运行apt-get update时突然出现了由于没有公钥,无法验证下列签名的问题,尝试了网上许多方法,最终找到了一种亲测有效的解决方法:
(2)解决方法
在终端输入:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 76F1A20FF987672F
其中最后的代码为报错语句中的最后一部分:由于没有公钥,无法验证下列签名: NO_PUBKEY 76F1A20FF987672F
(3)解决结果
Executing: /tmp/apt-key-gpghome.uBwlOPqFFF/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 76F1A20FF987672F
gpg: key 76F1A20FF987672F: 1 signature not checked due to a missing key
gpg: 密钥 76F1A20FF987672F:公钥“WineHQ packages <wine-devel@winehq.org>”已导入
gpg: 合计被处理的数量:1
gpg: 已导入:1
1.4 Cmake 版本更新
更新cmake
(1)报错信息
CMake Error at CMakeLists.txt:15 (cmake_minimum_required):
CMake 3.13 or higher is required. You are running version 3.10.2
-- Configuring incomplete, errors occurred!
(2)解决方法
首先尝试一下
sudo apt update
sudo apt upgrade
如果还不行,那么就到官网安装新版cmake。
到cmake官网的下载页面下载最新的cmake安装包,以cmake-3.25.2.tar.gz为例。
解压安装包
tar -zxvf cmake-3.25.2.tar.gz
进入安装包
cd cmake-3.25.2
开始安装
chmod 777 ./configure
./configure
make -j8
sudo make install
sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force
(3)解决结果
运行下列命令检查cmake是否正确安装
cmake --version
1.5 cudnn问题,apt upgrade出现警告/sbin/ldconfig.real
问题描述:
安装软件,或使用sudo apt upgrade时,命令行出现警告信息:
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 is not a symbolic link
问题原因:
CUDA和cuDNN库的符号链接失效,重新创建符号链接:
解决方法:
注意按照自己的报错信息修改路径
sudo ln -sf /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.9.1 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.9.1 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.9.1 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn.so.8.9.1 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn.so.8
sudo ln -sf /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.9.1 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.9.1 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.9.1 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
1.6 conda环境导致的源码安装包问题
问题描述:
如果在conda环境下从源码编译安装某个包,在cmake阶段,可能会出现下面的问题:
CMake Warning at cmake/CMakeHelper.cmake:103 (add_executable):
Cannot generate a safe runtime search path for target colmap_main because
files in some directories may conflict with libraries in implicit
directories:
runtime library [libmpfr.so.6] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/mahaofei/anaconda3/lib
runtime library [libgmp.so.10] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/mahaofei/anaconda3/lib
runtime library [liblz4.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/mahaofei/anaconda3/lib
runtime library [libsqlite3.so.0] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/mahaofei/anaconda3/lib
runtime library [libgomp.so.1] in /usr/lib/gcc/x86_64-linux-gnu/9 may be hidden by files in:
/home/mahaofei/anaconda3/lib
Some of these libraries may not be found correctly.
Call Stack (most recent call first):
src/colmap/exe/CMakeLists.txt:67 (COLMAP_ADD_EXECUTABLE)
解决方法:
退出conda环境,然后再编译安装。
# 临时退出
conda deactivate
# 取消终端自动进入conda
conda config --set auto_activate_base false
1.7 the provided PTX was compiled with an unsupported toolchain
问题描述:
从源码编译安装某些包,完成之后无法使用,例如我的colmap一直报错如下:
CuTexImage::BindTexture: invalid device symbol
FilterH: the provided PTX was compiled with an unsupported toolchain.
E1220 10:33:57.020385 2392647 feature_extraction.cc:276] Failed to extract features.
CuTexImage::BindTexture: the provided PTX was compiled with an unsupported toolchain.
解决方法:
更新显卡驱动,亲测有效。
二、ROS
2.1 使用其它工作空间的包,未加载其它工作空间的source
(1)报错信息
Failed to load nodelet '/camera/realsense2_camera` of type `realsense2_camera/RealSenseNodeFactory` to manager `realsense2_camera_manager'
(2)报错原因
原因是找不到realsense2_camera包,在安装D435的包时,以为bashrc文件里已存在要添加的路径故没有执行
(3)解决方法
source ~/catkin_ws/devel/setup.bash
或者
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
2.2 有多个.so文件同时被引用
(1)报错信息
symbol lookup error: /home/huffie/catkin_ws/devel/lib//librealsense2_camera.so: undefined symbol: _ZN20ddynamic_reconfigure19DDynamicReconfigureC1ERKN3ros10NodeHandleE
(2)报错原因
系统内librealsense2_camera.so的数量不唯一,在多个路径下都存在此库
(3)解决方法
查找一下动态库路径
echo $LD_LIBRARY_PATH
将显示的其它工作空间的build和devel文件夹都删掉就可以了
2.3 PCL要求C++11及以上
(1)报错信息
error: #error PCL requires C++14 or above
(2)报错原因
CMakeLists.txt没有添加C++14的配置
(3)解决方法
在CMakeLists.txt中添加下面这几行代码
add_compile_options(-std=c++11 )
add_compile_options(-std=c++14 )
set(CMAKE_CXX_STANDARD 14)
2.4 error while loading shared libraries
(1)报错信息
/opt/ros/noetic/lib/rosout/rosout: error while loading shared libraries: libxmlrpcpp.so: cannot open shared object file: No such file or directory
[rosout-1] process has died [pid 82803, exit code 127, cmd /opt/ros/noetic/lib/rosout/rosout __name:=rosout __log:=/home/huffie/.ros/log/834eb474-ba51-11ed-861b-470c5d943dac/rosout-1.log].
log file: /home/huffie/.ros/log/834eb474-ba51-11ed-861b-470c5d943dac/rosout-1*.log
(2)问题原因
链接器找不到库文件,搜索libxmlrpcpp.so,发现其位置为/opt/ros/noetic/lib
(3)解决方法
sudo gedit /etc/ld.so.conf.d/libc.conf
在其中添加libxmlrpcpp.so的目录
/opt/ros/noetic/lib
然后执行
sudo ldconfig
就ok了
三、系统问题
3.1 Windows+Ubuntu双系统,Win更新后Ubuntu引导项消失
首先在BIOS里确定Ubuntu的启动顺序是不是在Windows之前,一定要启动ubuntu,然后才有引导
插入ubuntu启动盘,重启电脑,选择U盘启动,进入后选择 try ubuntu without install
进入界面后连接网络
输入以下命令
sudo apt-add-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair
安装成功后继续在终端输入以下命令:
boot-repair
期间会检索引导项,等待即可
完成后点击Recommended repair
等待一下,成功找回
3.2 Ubuntu启动后左上角光标闪烁,且出现snd_hda_intel cannot probe codecs的错误信息
问题描述:
系统运行正常的情况下,重启了服务器,再开机就进入不了桌面了,一直左上角光标闪烁,并且等待一段时间后出现snd_hda_intel cannot probe codecs的报错。
解决方法:
清空回收站,本人遇到的问题是磁盘没有空间了,无法启动某个驱动,通过ssh连接系统后使用下面命令清空回收站即可
sudo rm -rf ~/.local/share/Trash/*
3.3 Kernel panic - not syncing: Attempted to kill init!
问题描述:
我在正常使用电脑时,突然所有图标全都变成空白方框(左侧 dock 栏、右上角所有系统图标),系统完全卡死,所有软件包括命令行无法打开,设置无法打开,点击重启无效。
强制重启后,ubuntu 无法进入,显示许多行代码,最后一行为 Kernel panic - not syncing: Attempted to kill init!,此时双系统的 Win11 仍然正常。
解决方法:
经查阅资料,应该是系统自动更新内核导致的问题(也有的说是因为/boot 分区满了出现问题)。
开机后在引导界面选择 Advance option for ubuntu,前两个为最新版本的内核,不要选择这两个,选择第三个,进入旧版本的内核。
检查 /boot 分区是否占用为 100%
df
查看所有已安装内核
dpkg --get-selections| grep linux
查看当前正在使用的内核
uname -a
删除最新的(有错误的/如果 boot 满了则删过老的)内核,我这里新内核版本相关的只有这两个包,请根据自己情况调整。注意一定不要误删
sudo apt-get remove --purge linux-modules-5.15.0-88-generic linux-image-5.15.0-88-generic
完成后清理
sudo dpkg -P linux-modules-5.15.0-88-generic
sudo dpkg -P linux-image-5.15.0-88-generic
3.4 惠普暗影精灵9/光影精灵9,无法拓展显示器
问题描述
惠普暗影精灵9/光影精灵9,安装ubuntu20.04,已经正常安装显卡驱动,nvidia-smi输出正常,但是外接显示器不识别。
输入xrandr发现只有笔记本显示器。
打开nvidia控制面板,发现nvidia识别到了外接显示器。
尝试了切换显卡驱动无效,关闭secure boot无效。
解决方法
进入BIOS,在配置中,将独显直连(NVIDIA ... Advance,具体是什么记不清了),改为混合模式(Discrete),然后就可以了。
3.5 系统启动后进入(initramfs)
问题描述:
我在 ubuntu+win 双系统中,使用 windows 访问了 ubuntu 的文件,再次启动 ubuntu 后发现出现错误,开机后进入了命令行界面,显示如下内容:
BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash)
Enter 'help' for a list of built-in commands.
(initramfs)
解决方法:
参考 How To Fix Busybox Initramfs Error On Ubuntu
使用 fsck 命令修复损坏分区中的文件系统:
(可以使用 cat /proc/partitions 或 blkid 或 lsblk 命令在 Busybox 中获取您的 Linux 分区详细信息。)
# 如果是机械硬盘,则为sdax,例如
fsck /dev/sda1 -y
# 如果是固态硬盘,则为nvmexnxpx
fsck 则为nvme1n1p2 -y
几分钟后,你会看到如下输出,说明修复完成:
/dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda1: 497733/30531584 files (1.5% non-contiguous), ........
然后重启系统(如果 reboot 无效,输入 exit 后回车重启)
reboot
3.6 A stop job is running for session X of user XXX
问题描述:
Ubuntu 在关机或重启时,速度非常慢,在关机界面中按下任意按键会看到 A stop job is running for session 2 of user mahaofei 的提示。
解决方法:
编辑文件
sudo nano /etc/systemd/system.conf
将 DefaultTimeoutStopSec 行取消注释,并将时间修改为想要的时间,例如 5s。
DefaultTimeoutStopSec=5s
重新加载配置文件
sudo systemctl daemon-reload
3.7 Realtek 网卡没有网络连接图标
问题描述:
Ubuntu 22.04 系统,台式机,使用 Realtek 网卡,安装 Ubuntu 后发现系统没有网络连接选项。
在设置中看不到有线网络连接。
解决方案:
首先检查网卡需要的驱动
lspci | grep net
# 显示:
# Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126
# 这里 8126 就是所需要的驱动版本
检查是否有安装冲突的网卡驱动
lspci -k
# 显示
# Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126
# Subsystem: ASUSTEK Computer Inc. Device XXXX
# Kernel modules: 8169
# 比如如果第三行显示 8169,而第一行显示 8126,则说明应该安装 r8126 驱动,但是错装了 r8169 驱动,有冲突导致无法正常使用网络。
(如有)卸载冲突的驱动:
# 找到网卡驱动的位置 并删除
modinfo r8169 | grep filename
sudo rm -rf <找到的path>/r8169.ko
# 卸载驱动
sudo rmmod r8169
# 查看是否卸载成功
sudo lsmod | grep r8169
下载新的驱动,找到符合自己需求的驱动版本,下载:https://www.realtek.com/Download/List?cate_id=584;例如这里下载 r8126 的驱动。

解压驱动安装包:
# 解压到 /usr/src
sudo tar xvf r8126-10.016.00.tar.bz2 -C /usr/src
cd /usr/src/r8126-10.016.00
touch dkms.conf
使用 gedit dkms.conf 或者 vim dkms.conf,打开文件,输入以下内容保存(注意修改成自己的驱动版本):
PACKAGE_NAME=Realtek_r8126
PACKAGE_VERSION=10.016.00
DEST_MODULE_LOCATION=/updates/dkms
BUILT_MODULE_NAME=r8126
BUILT_MODULE_LOCATION=src/
MAKE="'make' -C src/ all"
CLEAN="'make' -C src/ clean"
AUTOINSTALL="yes"
使用以下命令安装驱动:
# 安装 dkms
sudo apt update
sudo apt install dkms
# 编译dkms 并 挂载驱动
sudo dkms add -m r8126 -v 10.016.00
sudo dkms build -m r8126 -v 10.016.00
sudo dkms install -m r8126 -v 10.016.00
sudo depmod -a
sudo modprobe r8126
后续问题:重启后有线网络图标消失
原因是因为过了一段时间,升级了系统内核,但是编译的网卡驱动,对于当前内核存在兼容问题,导致手动导入驱动 sudo modprobe r8126 时报错 modprobe: ERROR: could not insert 'r8126': Exec format error。
解决方案:卸载现有驱动,重新编译安装
# 先卸载掉 r8126 驱动,根据自己的驱动版本号来
sudo dkms remove r8126/10.016.00 --all
# 然后 cd 到驱动包路径,执行如下操作
cd /usr/src/r8126-10.016.00
sudo dkms add -m r8126 -v 10.016.00
sudo dkms build -m r8126 -v 10.016.00
sudo dkms install -m r8126 -v 10.016.00
sudo depmod -a
sudo modprobe r8126
这时 sudo modprobe r8126 没有报错信息输出,说明导入驱动正常,设置中也显示了有线网络。
四、小工具
4.1 解压当前目录下所有 zip 压缩包到 zip 文件同名目录
直接使用 unzip 会讲 zip 中的内容解压到当前目录下,使用以下脚本则会将当前目录下的所有 zip 压缩包解压成对应文件夹
#!/bin/bash
# Loop through all .zip files in the current directory
for zipfile in *.zip; do
# Check if there are no zip files
if [ "$zipfile" == "*.zip" ]; then
echo "No zip files found."
exit 1
fi
# Get the base name of the file (without extension)
foldername="${zipfile%.*}"
# Create the folder (if it doesn't exist) and unzip into it
mkdir -p "$foldername"
unzip "$zipfile" -d "$foldername"
done
echo "All zip files have been extracted."

评论