升级内核至 4.15
到安装包下载地址根据系统类型,例如amd64下载4个包含generic的安装包,然后执行sudo dpkg -i *.deb
进行安装,然后重启
解压tar失败
如果用命令 tar -zxvf xxx.tar 解压的话会出现提示:1
2
3gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
然后用file
命令查看了文件的格式 发现是POSIX tar archive 格式的,用命令 tar -xvf xxx.tar
成功解压好了
bug: ls 不显示文件
scp文件到远程机后,在远程机已经locate到了文件,在文件管理器里也看到了,但是用ll
和ls
却看不到,这是ubuntu18.04的bug
在Linux拷贝数据到U盘时,最好不要马上直接拔U盘,因为拷贝数据会花一定时间,可能导致拷贝失败
could not get lock /var/lib/dpkg/lock -open
apt-get命令安装一些软件包时,总报错:E:could not get lock /var/lib/dpkg/lock -open
出现这个问题的原因可能是有另外一个程序正在运行,导致资源被锁不可用。而导致资源被锁的原因,可能是上次安装时没正常完成,而导致出现此状况。
解决方法:输入以下命令1
2sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
执行 updatedb
报错: updatedb: can not open a temporary file for /var/lib/mlocate/mlocate.db
必须是root才能执行命令,sudo updatedb
。有时可能又报错:*/var/lib/mlocate/mlocate.db' is locked (probably by an earlier updatedb)
此时稍等一会再运行命令即可。
Qt编译错误 usr/bin/ld cannot find
linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息:
/usr/bin/ld: cannot find -lxxx
例如:1
2
3
4/usr/bin/ld: cannot find -lGL
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lltdl
/usr/bin/ld: cannot find -lpulse
其中xxx即表示函式库文件名称,如上例的:libc.so、libltdl.so.
命名规则:lib+库名(即xxx)+.so
一般是lib没有装或版本不对,解决方法:
- 先搜索lib,规则是
apt-cache search libXXX-dev
或者用apt-file
,因为库的完整名称不确定。例如:
1 | apt-cache search libgl-dev |
- 根据搜索的结果安装库,有时结果很多,需要正确选择。例如:
apt-get install libgl1-mesa-dev
参考:Qt 编译常见错误:usr/bin/ld: cannot find
安装扩展名sh的软件包
安装从网上下载的软件包时出错,扩展名为sh
原因在于它实际不是sh脚本文件,而是二进制文件,用./file
形式运行
软件包有未满足的依赖关系
在linux上安装某个库时,经常出现依赖项版本不匹配的情况,可以一级一级找到出问题的依赖项,一般是现有版本比要安装的版本还要高
上图所示是gcc的版本不匹配,这种问题就要用到aptitude,运行命令:sudo aptitude install gfortran-5
,首先会显示出问题的依赖项,然后给出解决方案,一般第一种都不是我们想要的,选n后看第二种,再不合适就继续n,直到找到需要的解决方案为止
ubuntu中Qt无法输入中文的问题
前提是安装了fcitx1
2
3
4
5sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /home/user/Qt5.13.0/5.13.0/gcc_64/plugins/platforminputcontexts
sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /home/user/Qt5.13.0/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts
sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /home/user/Qt_ROS_Developer/latest/lib/Qt/plugins/platforminputcontexts
version * not found
我用20.04,从22.04拷贝过来Groot,结果运行报错1
2
3
4
5
6
7
8
9
10
11
12
13~/Groot/build$ ldd Groot | grep not
./Groot: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./Groot)
./Groot: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./Groot)
./Groot: /lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.15' not found (required by ./Groot)
./Groot: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by ./Groot)
./Groot: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by libbehavior_tree_editor.so)
./Groot: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by libbehavior_tree_editor.so)
./Groot: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by libbehavior_tree_editor.so)
./Groot: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by libbehavior_tree_editor.so)
./Groot: /lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by libbehavior_tree_editor.so)
./Groot: /lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.15' not found (required by libbehavior_tree_editor.so)
以缺少GLIBCXX_3.4.30
为例,执行strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
发现 GLIBCXX
只到 3.4.28,确实是 not found
两个文件一模一样,即md5值一样,但是依赖库的版本可能不同,这样两文件运行的结果也有可能不同。
检查系统日志
检查日志文件的大小: journalctl --disk-usage
清除最近5天的日志: sudo journalctl --vacuum-time=5d