C++/linux开发备忘录

linux工具

WinSCP,windows和linux传输文件。
putty64,远程登录linux,命令行操作,类似SecureCRT。
MobaXterm,全功能的终端软件。支持SSH连接,支持FTP、串口等协议,推荐使用。

常用软件安装命令

sudo apt-get update#若某个软件安装失败,尝试先更新一下
sudo apt-get upgrade#升级
sudo apt install vim
sudo apt-get install g++
sudo apt-get install gcc
sudo apt install cmake
sudo apt-get install git
sudo apt install sqlite3
sudo apt-get install wireshark
#若软件安装提示无法解决的依赖,可以尝试用aptitude安装
sudo apt-get install aptitude#安装aptitude
sudo aptitude install v4l-utils#提示错误,则用这个命令安装,先n后y

centos安装

yum install -y gcc		#安装C编译器
yum install -y gcc-c++	#安装C++编译器

sqliteman,sqlite数据库管理工具

sudo apt-get install sqliteman#sqliteman安装
sqliteman database.db#sqliteman使用

cheese测试摄像头

sudo apt install cheese#安装
sudo apt install webcam#cheese无图像
#若还是无图像,虚拟机USB兼容性选择3.1

SSH

sudo apt install ssh*
sudo vim /etc/ssh/sshd_config#若连接失败: Port 22取消注释
sudo /etc/init.d/ssh restart#重启服务

alsamixer(声音配置图形界面)

sudo apt-get install alsa-utils#安装
./alsamixer#启动

虚拟机磁盘工具,若虚拟机无法开机,可以用这个拷贝数据
https://www.diskgenius.cn/

火狐浏览器和谷歌chrome浏览器

#centos7安装火狐浏览器
sudo yum install firefox
firefox#启动浏览器

#centos7安装chrome
wget  https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm#下载rpm包
sudo yum install liberation-fonts#安装依赖
sudo yum install vulkan #安装依赖
sudo rpm -ivh  google-chrome-stable_current_x86_64.rpm#安装rpm包
google-chrome#启动浏览器

安装微信QQ等

wget -O- https://deepin-wine.i-m.dev/setup.sh | sh
sudo apt-get install com.qq.weixin.deepin

SCP,远程拷贝,依赖SSH

scp [本地文件]  [远端用户名]@[远端IP]:[远端保存路径]
scp testAudioCall.zip  chw@192.168.72.3:/home/chw

pstack

sudo apt install pstack
pstack [进程号]#查看进程的所有线程调用栈

perf
一款非常好的性能分析工具,可以查看热点进程和热点函数

#ubuntu安装
sudo apt-get install linux-tools-common linux-tools-"$(uname -r)" linux-cloud-tools-"$(uname -r)" linux-tools-generic linux-cloud-tools-generic
#centos安装
yum install perf
#如果安装失败,增加源sudo vim /etc/apt/sources.list(deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse)
#执行sudo apt-get update,完成后再执行安装命令
#perf的使用
sudo perf top#类似于 top,它能够实时显示占用 CPU 时钟最多的函数或者指令,因此可以用来查找热点函数
sudo perf top -p `pidof metap2p3` #查看进程的热点函数
sudo perf record -e cpu-clock ./metap2p3 1 2 3 4 5 6 call audio#记录热点函数统计信息
perf report -i perf.data#查看记录
#perf查看到热点函数,可能是当前代码里的,也可能是调用动态库里面的,可以把动态库源码下载下来查询是否有和热点函数同名函数

tcpdump
linux抓包工具

常用选项:
-vvvv:输出详细的报文信息;
-c: 在收到指定的包的数目后,tcpdump就会停止;
-i: 指定监听的网络接口;
-w: 直接将包写入文件中,并不分析和打印出来;
host: 根据主机ip来抓包,前面带src抓源IP,带dst抓目标IP
port: 根据端口进行抓包,前面带src抓源port,带dst抓目标port
net: 根据网段进行抓包
protocol: 根据协议进行抓包,tcp、udp、icmp、ip、arp、rarp、ether协议等
src: 源MAC,后面跟mac地址
dst: 目标MAC,后面跟mac地址

示例:抓取任意网卡、目标IP是192.168.72.68、端口是9090、udp协议的包,保存到当前目录123.pcap文件,显示详细信息。

sudo tcpdump -i any dst host 192.168.72.68 and port 9090 and udp -w 123.pcap -vvvv

nmap
nmap是流行的TCP/UDP端口扫描工具。

#安装
yum install nmap
sudo apt  install nmap
#选项
-p	#扫描指定端口
-e	#指定网卡

扫描

nmap -sT 192.168.1.11 #TCP connect scan[three hand-shakes]
nmap -sS 192.168.1.11 #TCP SYN scan[syn->recv ack]
nmap -sA 192.168.1.11 #TCP ACK scan
nmap -sW 192.168.1.11 #TCP Window scan
nmap -sM 192.168.1.11 #TCP Maimon scan
nmap -sN 192.168.1.11 # TCP Null scan
nmap -sF 192.168.1.11 #TCP FIN scan
nmap -sX 192.168.1.11 #Xmas扫描 发送的fin push、urg置位的包
nmap -sU 192.168.1.11 #udp扫描,只是发udp空包

返回结果解释

  • Open(开放的): 应用程序正在这个端口上监听连接。
    Closed(关闭的): 端口对探测做出了响应,但是现在没有应用程序在监听这个端口。
    Filtered(过滤的): 端口没有对探测做出响应。同时告诉我们探针可能被一些过滤器(防火墙)终止了。
    Unfiltered(未被过滤的):端口对探测做出了响应,但是Nmap无法确定它们是关闭还是开放。
    Open/Filtered: 端口被过滤或者是开放的,Nmap无法做出判断。
    Closed/Filtered: 端口被过滤或者是关闭的,Nmap无法做出判断。

iftop
实时流量监控工具,可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。

安装依赖库libpcap
下载libpcap安装包:https://www.tcpdump.org/release/libpcap-1.10.1.tar.gz

#可能需要的依赖
sudo apt-get install build-essential
sudo apt-get install flex
sudo apt-get install bison
#开始安装libpcap
tar -zxvf libpcap-1.10.1.tar.gz
cd libpcap-1.10.1
sudo ./configure
sudo make
sudo make install

安装iftop

wget http://www.ex-parrot.com/pdw/iftop/download/iftop-1.0pre4.tar.gz#下载安装包
tar zxf iftop-1.0pre4.tar.gz
cd iftop-1.0pre4
sudo ./configure
sudo make -j4
sudo make install

报错:iftop: error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory
已经安装了libpcap,但还是报错,查询一下发现还真没有这个so库,添加一个软链接即可。

报错:(Can’t find a curses library supporting mvchgat.) Consider installing ncurses.
安装ncurses

yum install ncurses-devel
locate libpcap.so.1
/usr/lib/i386-linux-gnu/libpcap.so.1.10.0
/usr/lib/x86_64-linux-gnu/libpcap.so.1.10.0
sudo ln -s /usr/lib/x86_64-linux-gnu/libpcap.so.1.10.0 /usr/lib/x86_64-linux-gnu/libpcap.so.1

启动iftop

sudo iftop			#默认第一块网卡
iftop -P -i eth0 	#指定网卡

界面介绍:
1、iftop 输出中最上面的一行,此行信息是流量刻度,用于显示网卡带宽流量。
2、中间部分:左列和中列表示谁和谁通信;右列又分三小列,分别表示2 秒内、10 秒内和 40 秒内的平均流量值;流量条形图对流量大小的动态展示。
3、下面部分:TX表示发送数据,RX表示接收数据,TOTAL表示发送和接收全部流量。与这三行对应的有三列,其中cum列表示从运行 iftop 到目前的发送、接收和总数据流量。peak列表示流量峰值。rates列表示过去 2s、10s、40s 的平均流量值。
glog
Google Glog 是一个C++语言的应用级日志记录框架,提供了C++风格的流操作和各种助手宏。
编译选项加-lglog

sudo apt-get install libgoogle-glog-dev#安装
sudo apt-get remove libgoogle-glog-dev#卸载

每次运行都会记录新的日志文件,会刷新软链接指向最新生成的日志,低级别日志会包含高级别日志。

#include <glog/logging.h>

    FLAGS_log_dir = "./log";//设置log保存路径
    google::SetLogFilenameExtension(".log");//设置文件名后缀
    google::InitGoogleLogging("qttest");

    google::FlushLogFiles(google::GLOG_INFO);//刷新日志,线程安全
    LOG(INFO)<< "GLOG INFO";
    DLOG(INFO)<< "debug GLOG INFO";//前缀D,只在调试模式记录
    LOG(ERROR)<< "GLOG ERROR";

    int n1 = 0;
    LOG_IF(INFO, n1 > 10) << "n1 = 0";//条件日志,不满足条件,不记录
    n1 = 12;
    LOG_IF(INFO, n1 > 10) << "n1 = 11";//条件日志,满足条件,记录

    for(int index=0;index<32;index++){
        //第一次运行时记录,此后每执行10次记录一次
        LOG_EVERY_N(INFO, 10) << "Got the " << index << "LOG_EVERY_N";
        //类似LOG_EVERY_N,但加了条件判断,且(index > 11)时才记录
        LOG_IF_EVERY_N(INFO, (index > 11), 10) << "Got the " << index<< "LOG_IF_EVERY_N";
        //只记录前五次,后面不再记录
        LOG_FIRST_N(INFO, 5) << "Got the " << index << "LOG_FIRST_N";
    }

    int n2 = 0;
    //如果n2!=0则输出日志,并且程序crash;否则不输出日志正常运行
    CHECK(n2==1) << "There is a mistake!";

    LOG(FATAL)<< "HELLO GLOG FATAL";//记录该日志后,程序crash,qt调试信息输出崩溃调用栈
    google::ShutdownGoogleLogging();//关闭日志记录

Gtest
GTest是Google开发的跨平台而且开源的C++单元测试框架。
编译选项加-lgtest

sudo apt-get install libgtest-dev

linux线程性能优化

方法一:使用pstack

ps p [pid] -L -o pcpu,pid,tid,time,tname,stat,psr |sort -n -k1 -r	#查看进程内线程CPU占用率,包含tid
pstack [pid]	#查看进程内线程调用栈,可用上一步查到的tid做匹配

方法二:使用gdb

top	#查询进程PID
ps p [pid] -L -o pcpu,pid,tid,time,tname,stat,psr |sort -n -k1 -r	#查看进程内线程CPU占用率,包含tid
gdb	#启动gdb
(gdb) attach	PID		#attach进程,此时进程会中断
(gdb) info threads	    #查看所有线程信息
(gdb) thread 7	     	#进入7号线程
(gdb) bt				#打印调用栈

方法三:
实时查询进程内每个线程CPU占比、内存占比、线程名称(pthread_setname_np接口设置,不设置则默认为程序名)等。

 top -Hp [pid]

cpu性能查询与修改

lscpu		#查询cpu信息概述,包括cpu数量,主频等
cd /sys/devices/system/cpu	#cpu设备目录,包含cpu设备列表
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq	#查看0号cpu当前工作主频

其他相关查询

cpuinfo_cur_freq: 当前cpu正在运行的工作频率
cpuinfo_max_freq:该文件指定了处理器能够运行的最高工作频率 (单位: 千赫兹)
cpuinfo_min_freq :该文件指定了处理器能够运行的最低工作频率 (单位: 千赫兹)
cpuinfo_transition_latency:该文件定义了处理器在两个不同频率之间切换时所需要的时间 (单位: 纳秒)
scaling_available_frequencies:所有支持的主频率列表 (单位: 千赫兹)
scaling_available_governors:该文件显示当前内核中支持的所有cpufreq governor类型
scaling_cur_freq:被governor和cpufreq核决定的当前CPU工作频率。该频率是内核认为该CPU当前运行的主频率
scaling_driver:该文件显示该CPU正在使用何种cpufreq driver
scaling_governor:通过echo命令,能够改变当前处理器的governor类型
scaling_max_freq:显示当前policy的上下限 (单位: 千赫兹)需要注意的是,当改变cpu policy时,需要首先设置scaling_max_freq, 然后才是scaling_min_freq
scaling_setspeed:如果用户选择了“userspace” governor, 那么可以设置cpu工作主频率到某一个指定值。只需要这个值在scaling_min_freq 和 scaling_max_freq之间即可。

修改CPU0的频率

#首先将CPU0调整到用户自定义模式
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
#设置CPU0的频率(该频率需要是主频率列表的频率)
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

所有cpu工作模式修改为performance

cpupower frequency-set -g performance

linux系统设置

防火墙

sudo ufw disable#关闭防火墙
sudo ufw enable#开启防火墙
sudo ufw status#查看防火墙状态

修改时区和时间(ubuntu20.04可在设置里直接设置)

tzselect#选择亚洲-北京时区,将export TZ=Asia/Shanghai 添加到/etc/profile文 件中去,然后退出并重新登陆即可:sed -i ‘$a\export TZ=Asia/Shanghai’ /etc/profile
date#查询当前时间
timedatectl#查询机器时间和时区,ubuntu可以右上角点击时间修改时区
timedatectl set-time #“想要修改的时间”,可手动修改日期时间

vim中文乱码

#修改全局配置文件/etc/vim/vimrc,在文件中添加:
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

ubuntu屏幕旋转

$ sudo xrandr -o left# 向左旋转90度
$ sudo xrandr -o right# 向右旋转90度
$ sudo xrandr -o inverted# 上下翻转
$ sudo xrandr -o normal# 回到正常角度
#Ubuntu16.04桌面菜单栏移到屏幕下方
gsettings set com.canonical.Unity.Launcher launcher-position Bottom
gsettings set com.canonical.Unity.Launcher launcher-position Left#移回去

安装微软雅黑字体

#在/usr/share/fonts下创建一个文件夹
cd /usr/share/fonts
sudo mkdir winfonts
#在window下的 c://window/Fonts 中找出msyh.ttc,拷贝到winfonts文件夹
sudo chmod 744 msyh.ttc #修改权限
#依次执行,生成核心字体信息
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv
apt install xfonts-utils#mkfontscale command not found报错执行

linux换源,阿里源

cp /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/sources.list
#替换如下内容
# source && source code
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute-security main restricted universe multiverse
# Advance distribution source, Not recommended
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ hirsute-proposed main restricted universe multiverse

# source && source code
deb http://mirrors.aliyun.com/ubuntu hirsute main restricted
deb http://mirrors.aliyun.com/ubuntu hirsute-updates main restricted
deb http://mirrors.aliyun.com/ubuntu hirsute universe
deb http://mirrors.aliyun.com/ubuntu hirsute-updates universe
deb http://mirrors.aliyun.com/ubuntu hirsute multiverse
deb http://mirrors.aliyun.com/ubuntu hirsute-updates multiverse
deb http://mirrors.aliyun.com/ubuntu hirsute-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu hirsute-security main restricted
deb http://cn.archive.ubuntu.com/ubuntu hirsute-security universe
deb http://cn.archive.ubuntu.com/ubuntu hirsute-security multiverse

Vmware虚拟机Ubuntu18.04不能上网,网络连接图标消失。

sudo service network-manager stop
sudo cp /var/lib/NetworkManager/NetworkManager.state  /var/lib/NetworkManager/NetworkManager.state.backup
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service network-manager start
reboot
sudo gedit /etc/NetworkManager/NetworkManager.conf
#把对应的选项修改:managed = true

linux系统查询命令

ping6 fe80::3eec:efff:fe84:eff4%ens33	#ping IPv6,ens33是网卡名,用ifconfig查询
sudo uname --m#查询系统是64位还是32位,X86_64表示64位,i686表示32位
cat /proc/version#查询linux系统版本
lscpu#查看cpu配置
xrandr#查看可以修改的分辨率,*为当前分辨率
xrandr -s 1400x10520_59.98#设置分辨率
ps aux#查看进程
kill -9 [进程号]#强制中止进程
killall -9 [进程名]#按进程名中止进程,可中止多个同名进程
pkill [进程名]#类似killall
source FileName#在当前bash环境下读取并执行FileName中的命令。
readelf -h libPdj.so#查询动态库或静态库位数,ELF32
netstat -apn | grep 8080#查看端口占用
ps aux | grep pdjserver#查询指定进程的进程号
pstree -p 11746 | wc -l#查询指定进程里运行的线程数量

#进程CPU利用率分析
top#显示了系统总体的 CPU 和内存使用情况,以及各个进程的资源使用情况 。但是,top 并没有细分进程的用户态 CPU 和内核态 CPU
pidstat#一个专门分析每个进程 CPU 使用情况的工具,默认间隔 1 秒展示了进程的 5 组 CPU 使用率
ps#则只显示了每个进程的资源使用情况,ps -ef | grep meat

linux硬件查询命令

查询摄像头设备
ubuntu20.04一个摄像头识别两个video,一个是图像/视频采集,一个是metadata采集,如果是metadata则ioctl(fd,VIDIOC_G_FMT,&Format)返回-1。

ls /dev/video*

v4l2查询音视频设备信息

sudo apt install v4l-utils#v4l安装
sudo apt-get install aptitude#安装aptitude
sudo aptitude install v4l-utils#提示错误,则用这个命令安装,先n后y
v4l2-ctl --list-devices#查看所有video列表
v4l2-ctl -d /dev/video0 --all#查看某个video的详细信息

音频设备查询

pacmd list-cards#查看声卡详细配置信息
#每一个声卡有一个card number和一个device number
aplay -l#查看扬声器设备清单
arecord -l#查看麦克风设备清单
cat /proc/asound/cards#查看声卡
vim /etc/asound.conf#修改默认声音设备

linux串口
串口设备的命名一般为/dev/ttySn(n = 0、1、2…),一般ttyS0对应com1,ttyS1对应com2;如果该串口为USB转串口,可能名称为/dev/ttyUSBn(n = 0、1、2…)

dmesg | grep ttyS*#检测硬件连接和断开信息,插拔串口会有信息
ls -l /dev/tty*#查看所有串口
sudo chmod o+rwx /dev/ttyUSB0#串口已识别,但是打开失败,可能是权限不够,修改权限

磁盘

df -l#查看文件系统挂载点大小,使用情况
fdisk -l#查看磁盘信息

ubuntu下qt开发

qt安装

sudo ./qt-opensource-linux-x64-5.10.1.run#下载安装包安装
#/opt/Qt5.10.1/Tools/QtCreator/bin,Qt安装目录,qtcreator可执行文件所在目录
#ubuntu20.04版本前面加sudo会安装在/opt/目录下,不使用sudo会安装在当前用户的家目录下

linux下qt对中文的支持(ubuntu16.04)
ubuntu20.04使用系统自带的中文输入法即可,安装在家目录的qt也可以直接使用中文了(新版本就是好)。

#先下载安装搜狗输入法linux版,http://pinyin.sogou.com/linux/,可能需要安装fcitx,在语言支持里由IBUS切换为fcitx
sudo dpkg -i sogoupinyin_2.4.0.3469_amd64.deb#安装
#sogoupinyin 会破坏 fcitx-ui-qimpanel//报错
sudo apt-get remove fcitx-ui-qimpanel#解决
#语言支持,将键盘输入法系统由默认的iBus设置为fcitx
#fcitx配置,将sogou输入法设为默认//重启可配置

#此时大部分软件可以打中文,QT还是不行
sudo apt-get install fcitx-frontend-qt5#安装fcitx支持qt5的库
#在这个路径找到libfcitxplatforminputcontextplugin.so,复制到下面两个路径(qt安装目录下找)
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts
/home/deepin/software/Qt5.10.0/5.10.0/gcc_64/plugins/platforminputcontexts
/home/deepin/software/Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts
#qt发布的程序也支持中文输入
#在工程目录创建platforminputcontexts目录,libfcitxplatforminputcontextplugin.so拷贝进去

ubuntu下使用QMediaPlayer

#ubuntu下需使用绝对路径(QCoreApplication::applicationDirPath() + “/wav/qzy_C.wav”)
#报错尝试下面的方法
sudo apt-get install libqt5multimedia5-plugins
sudo apt-get install libgstreamer-plugins-base1.0-dev
sudo ln -s /usr/include/libxml2/libxml /usr/include/libxml
sudo apt-get install libxml2-dev
sudo apt-get install glib-2.0

linux下QT编写Qcamer摄像头程序

sudo cp libpulse.so.0.19.0 /usr/lib/libpulse.so#/usr/bin/ld: 找不到 -lpulse:/usr/lib/x86_64-linux-gnu 
sudo cp libpulse-mainloop-glib.so.0.0.5 /usr/lib/libpulse-mainloop-glib.so#找不到 -lpulse-mainloop-glib:/usr/lib/x86_64-linux-gnu$
sudo cp libglib-2.0.so.0.4800.2 /usr/lib/libglib-2.0.so#找不到-lglib-2.0:/lib/x86_64-linux-gnu$ 

其他报错解决
QT报错undefined reference to `vtable for’,或报错未定义的信号
缺少Q_OBJECT,添加后还是报错,此时删除pro.user重新编译即可】

linux qt “QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enable“
/home/chw/Qt5.14.2/5.14.2/gcc_64/plugins/xcbglintegrations/ 拷贝到可执行文件目录

QT发布版无法执行
export LD_LIBRARY_PATH=/usr/local/lib,如果不生效
/etc/ld.so.conf,把库路径复制进来,执行sudo ldconfig

PulseAudioService: pa_context_connect() failed
using null output device none available
把qt安装目录下/plugins/audio/文件夹拷贝到可执行程序同级目录

Make:make not found in the environment.
could not determine whice “make” command to run
无法启动进程"make"
查看构建套件里是否配置了cmake,如果没有,则安装cmake,sudo apt install cmake

staticMetaObject’ is not a member of
把public QObject放在前面

Cannot make QOpenGLContext current in a different thread
如果QOpenGLWidget是嵌入到mainwindow里的,需要在mainwindow.show之后才能对QOpenGLWidget进行渲染操作

ubuntu安装mysql

QT引入mysql,pro文件添加

QT += sql
LIBS += -L -llibmysql
LIBS += -L -lmysqlclient
sudo apt-get update  #更新源
sudo apt-get install mysql-server #安装
systemctl status mysql#查看是否安装成功
sudo mysql -u root -p  # -u 指定用户名 -p需要输入密码
sudo mysql #可以不需要指定用户名密码
mysql>show databases;
show global variables like ‘port’;#查看端口号

CREATE USER 'username'@'host' IDENTIFIED BY 'password';#创建用户,host:指定该用户在哪个主机上可以登陆,本地用户可用localhost,任意远程可以使用通配符%
GRANT privileges ON databasename.tablename TO 'username'@'host' #授权
#privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
#databasename:数据库名 tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

atal error: mysql/mysql.h: 没有那个文件或目录

#都试试,哪个有用用哪个
sudo apt-get install libmysqlclient
sudo aptitude install libmysqlclient-dev
sudo apt-get install libmysql++-dev

mysql/mysql.h: No such file or directory

yum install mysql-devel#centos报错安装

1130 host is not allowed to connect to this mysql server报错

select Host,User from mysql.user;#查询允许连接的主机及用户信息
update mysql.user set `Host` = '%' where  User = 'root';#修改登录权限
flush privileges;#主动生效

1698 access denied for user ‘root’@报错

select user, plugin from mysql.user;#查看插件类型
update mysql.user set plugin='mysql_native_password' where user='root';#修改插件类型,auth_socket 修改为 mysql_native_password
sudo /etc/init.d/mysql restart#重启mysql

2003cant connect mysql 10061报错

vim /etc/mysql/mysql.conf.d/mysqld.cnf#bind-address注释掉这一行
sudo /etc/init.d/mysql restart#重启mysql

ubuntu卸载mysql

sudo service mysql stop#停止服务
sudo dpkg --list | grep mysql#查看mysql依赖包
sudo apt autoremove --purge mysql*#卸载依赖包,卸载失败可以从上往下一个个卸载
sudo apt remove 【依赖包名称】 #再次查询依赖包,如果又残余再进行删除
sudo rm -r /etc/mysql#手动删除mysql残余配置文件
sudo rm -r /var/lib/mysql#手动删除mysql残余数据文件

DNS域名解析顺序

1、浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址;
2、检查操作系统缓存:windows host地址:C:\Windows\System32\drivers\etc,linux host地址:/etc/hosts,格式:IP 域名
3、请求本地域名服务器(LDNS)解析这个域名,通常在距离较近的城市,大约能解析80%的域名;
4、本地域名服务器向根域名服务器,查找com(例)域的顶级域名服务器的地址,本地域名服务器 向com域的顶级域名服务器发起请求,返回权限域名服务器(权限域名服务器,用来保存该区中的所有主机域名到IP地址的映射)地址,本地域名服务器权限域名服务器发起请求,得到IP地址;
5、递归查询,如果DNS服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机;
6、迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果。

其他报错记录

error qt requires c++11 support
centos,老版本不支持c++11,安装新版本gcc

sudo yum install centos-release-scl
sudo yum install devtoolset-8-gcc*
scl enable devtoolset-8 bash

#替换旧的gcc
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
gcc --version
g++ --version

alsa/asoundlib.h: 没有那个文件

sudo apt-get install libasound2-dev

error: GL/gl.h: No such file or directory
#ubuntu

sudo apt-get install mesa-common-dev
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

#centos

yum install mesa-libGL-devel -y

PermitRootLogin prohibit -password
通过SSH远程连接ubuntu错误,排错:关闭主机和linux防火墙,ubuntu安装SSH服务,开启服务,虚拟机网卡VMnet8的IP使用自动获取IP

ubuntu E: 无法获得锁 /var/lib/apt/lists/lock

sudo rm /var/lib/apt/lists/lock

error: internal compiler error: Killed (program cc1plus)
ubuntu内存不足,增加内存

暂时不能解析域名“us.archive.ubuntu.com

sudo vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114

Source file is more recent than executable
源文件已修改,但正在运行的程序是基于一个更早的版本,比如工程A依赖工程B生成的静态库,B的代码修改后重新生成了库,但A的工程代码没有修改,不会重新编译,A还是在用老的B库,可以把A的可执行文件删了重新编译

ubunut配置文件错误,开不了机
开机按shift进入安全模式,ubuntu的高级选项—recovery mode—进入Recovery Menu—选择root进入命令行,输入root密码,以root身份修改配置文件后重启

/bin/bash^M: 坏的解释器

sed 's/\r//' -i gen_cert.sh	#windows写的脚本在linux使用,去掉多余的\r
set ff=unix					#或在vim里修改文件格式

‘X11/Xlib.h’ file not found
sudo apt-get install x11-utils libx11-dev libxext-dev

** error: cannot find -lGL**
sudo apt-get install libgl1-mesa-dev

error: pcap.h: No such file or directory
sudo apt-get install libpcap-dev

error: openssl/sha.h: No such file or directory
sudo apt-get install libssl-dev

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值