笔记本电脑有两种启动模式:
优点开机速度快,一般新电脑都支持此模式,UEFI模式下安装的操作系统,只能在UEFI快速启动模式下启动,因为UEFI模式只支持64位系统而且分区模式必须是gpt分区,不支持xp系统以及各种32位系统,UEFI模式下硬盘需为GPT分区,否则安装系统会失败,可以下载个u盘启动盘制作工具(推荐快启动),启动win10pe系统进行转换为gpt(如何将mbr转换为gpt)
缺点开机速度不够快,一般老旧电脑只支持此模式,传统模式只支持mbr分区,可支持XP、WIN7、WIN8、WIN10
不管是不是uefi启动,都要禁用Secure boot,否则无法识别启动盘,然后启动模式boot mode选择带有UEFI或Both的表示可以识别uefi启动盘;CSM(Compatibility support Module)表示兼容模块,该选项专为兼容只能在legacy模式下工作的设备以及不支持或不能完全支持UEFI的操作系统而设置。因此,win7支持的是MBR格式,安装win7系统还需要把Launch CSM设置为Enable,表示支持Legacy引导方式
win8/win10机型没有uefi选项,Launch CSM默认是Disabled,并开启Secure Boot,开启Secure boot就不能识别启动盘,包括uefi启动盘,所以要禁用Secure Boot,CSM开启时表示兼容Legacy模式,关闭时表示UEFI模式
打开运行,输入msinfo32回车,打开“系统信息”,查看BIOS版本,如果支持uefi就会显示,不支持就不会显示uefi;如果你是旧主板,不支持UEFI,那么就选择装机版,如果是新型UEFI主板,就选择UEFI版;如果是Legacy+MBR下安装系统,选择装机版,如果是UEFI+GPT下安装系统,选择UEFI版
(1) 在固态硬盘分出1G作为linux系统的/boot分区
(2) linux选择/boot分区作为引导文件存放位置
ACPI BIOS Error
chkdsk G:/f //(f表示要修复的盘,注意CHKDSK后面要打下空格健,再输入G:/f:)
提示:“是否计划在下次系统重新启动时检查这个卷”的提示输入:Y,回车,重新启动电脑不要进行任何操作,让电脑自己完全启动,因为系统正在进行修复
开始--》命令窗口输入:services.msc
在列表中找到Vmware Autorization Service服务项,在打开的服务属性窗口中,点击“启动类型”下拉按钮,在弹出菜单中选择“自动”菜单项
内核信息:cat /proc/version
发现版本信息:lsb_release -a或者cat /etc/lsb-release
由于ubuntu预安装的是tiny版本,所以会导致我们在使用上的产生上述的不便。但是,我们安装了vim的full版本之后,键盘的所有键在vi下就很正常了。
首先,要先卸掉旧版的vi,输入以下命令:
sudo apt-get remove vim-common
然后安装full版的vim,输入命令:
sudo apt-get install vim
虚拟机和主机需要配置在同一个子网内,并且配置相同的网关地址
原理:桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致
iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT –to-source 192.168.5.3
,如下命令表示把所有10.8.0.0网段的数据包SNAT成192.168.5.3/192.168.5.4/192.168.5.5
iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT –to-source 192.168.5.3-192.168.5.5
,这就是SNAT的使用方法,即可以NAT成一个地址,也可以NAT成多个地址iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
1. echo value > /proc/sys/xx/yy
2. vi /etc/sysctl.conf #vi编辑,然后添加设置 ; sysctl -p #生效
3. sysctl -w kernel.domainname="example.com" #利用-w生效
(1) 在/etc/sysctl.conf添加net.ipv4.ip_forward=1
(2) /etc/rc.local中添加:
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o wlan0 -j MASQUERADE
exit 0
修改: /etc/apt/sources.list
sudo apt-get update
打开系统设置—》打开亮度和锁屏—》设置屏幕多久关闭和锁屏时间设定,一个“从不”和“关闭”即可搞定
系统设置–>软件和更新–>更新,将“自动检查更新”和“有新版本时通知我”设置为“从不“,关闭对话框完成设置
sudo passwd //执行此命令,之后输入两次密码即可
1.编辑/etc/hostname 文件:只需从文件中删除现有的主机名。 将它替换为你想要的新主机名,然后保存文本文件
2.编辑/etc/hosts 文件:找到127.0.1.1 your-old-hostname行,修改名字和hostname相同即可
3.重启电脑,使生效
sudo apt-get install -y ubuntu-desktop //安装Ubuntu桌面系统
sudo apt-get install -y libopencv-dev //安装opencv2.4.9库
sudo apt-get install -y vim-common //安装vim
sudo apt-get install -y cmake
sudo apt-get install -y ffmpeg //安装播放器和相关开发库
–with-lua=no --with-java=no –-with-python=no 不安装对lua ,java等相应语言的支持
在.profile文件中添加
(1) export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig;$PKG_CONFIG_PATH
(2) export PATH=$PATH:
(3) export LD_LIBRARY_PATH=
加载动态库的几种方法
ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表
这里面涉及到的关键内容有命令:ldconfig,配置文件目录:/etc/ld.so.conf.d,配置文件在/etc/ld.so.conf内容由用户编辑,缓冲文件/etc/ld.so.cache。
下面举个例子,比如你在部署软件时,有些动态库安装在exe目录下,可以通过如下方法实现:
(1)配置exe.conf文件,里面加一行/opt/opencv/lib,然后将该文件放到/etc/ld.so.conf.d目录下
(2)在/etc/ld.so.conf文件中增加一行include ld.so.conf.d/exe.conf(默认时添加了*.conf)
(3)执行 ldconfig命令使三方库生效:sudo ldconfig
(4)显示所有的链接库:sudo ldconfig -p
(5)strings命令从ld.so.cache里面检查文本信息:strings /etc/ld.so.cache | grep libopencv*
可以通过在.bashrc或者.cshrc中配置该环境变量,LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库。可以设置多个搜索目录,这些目录之间用冒号分隔开
文件/etc/apt/sources.list是一个普通可编辑的文本文件,保存了ubuntu软件更新的源服务器的地址。和sources.list功能一样的是/etc/apt/sources.list.d/*.list(代表一个文件名,只能由字母、数字、下划线、英文句号组成)。sources.list.d目录下的.list文件为在单独文件中写入源的地址提供了一种方式,通常用来安装第三方的软件。
如果只是要登录到别人的机器,只需要安装openssh-client且ubuntu默认已经安装,如果本机要开放ssh服务允许别人登录就要安装openssh-server:
whereis ssh //查看是否有客户端
sudo apt install openssh-client //没有的话安装 OpenSSH 客户端应用程序
whereis sshd //查看是否有服务端
sudo apt install openssh-server //安装 OpenSSH 服务器应用程序
(1) 权限设置:
用户目录文件夹设置755或者700:sudo chmod 755 ~/.ssh
known_hosts文件一般设置为644: sudo chmod 644 ./ssh/known_hosts
(2)所有者设置:设置当前用户: sudo chown ubuntu:ubuntu(用户:用户组) ./ssh/known_hosts
sudo ifconfig eth0:1 192.168.245.109 netmask 255.255.255.0 up
route add default gw 192.168.1.1 eth0 默认网关
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从 /etc/profile.d 目录的配置文件中搜集shell的设置。
为每一个运行 bash shell 的用户执行此文件。当 bash shell 被打开时,该文件被读取。
每个用户都可使用该文件输入专用于自己使用的 shell 信息,当用户登录时,该文件仅仅执行一次!默认情况下,其他设置的一些环境变量,执行用户的 .bashrc 文件。
该文件包含专用于登陆用户的 bash shell 的 bash 信息,当登录时以及每次打开新的 shell 时,该该文件被读取。
当每次退出 bash shell 时,执行该文件。
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。
~/.bash_profile 是交互式、login 方式进入 bash 运行的。
~/.bashrc 是交互式 non-login 方式进入 bash 运行的。
在登录Linux时要执行文件的过程如下:在刚登录 Linux 时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login 或 ~/.profile 文件中的其中一个(根据不同的 Linux 操作系统的不同,命名不一样),
执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。
如果 ~/.bash_profile 文件存在的话,一般还会执行 ~/.bashrc文件。
(1)cpu:安装htop软件:```sudo apt-get install htop```
(2)gpu:```watch -n 1 nvidia-smi //一秒刷新一次```
/var/www/html 目录下
dmesg | grep usb
dmesg –c
(1)软链接:
建立:ln -s /usr/home /usr/local (使用绝对路径,否则容易找不到)
删除:rm -rf /usr/local
(2)硬链接:
建立:ln /usr/home /usr/local
删除:rm -rf /usr/local
删除硬链接和软链接都不会影响原始文件,但是修改的话会影响原始文件,软链接相当于windows的快捷操作,快捷方式删除了源文件还在。
硬链接的特点是链接文件和原始文件只要有一个存在文件就不会消失,他们共用一个inode,inode随着文件的存在而存在,因此只有当文件存在时才可创建硬链接,即inode存在且链接计数器不为0。inode号仅在各文件系统下是唯一的,因此硬链接创建时不可跨文件系统,不能对目录创立硬链接,因为当前目录(.),父目录(…)就是硬链接。(查看inode号 -i)
软链接有自己的inode号以及用户数据块,可以有自己的文件属性及权限;可对不存在及存在的文件或目录创建软链接;软链接可交叉文件系统;创建软链接i_nlink计数不会增加;
(1) which + 可执行文件名称:查看可执行文件位置,在PATH变量指定的路径中,搜索某个系统命令位置
(2) whereis:查看文件位置,只用于程序名的搜索,而且只搜索二进制文件(参数-b),
man说明文件(-m),源代码文件(-s)。如果参数省略,则返回所有信息
(3) locate:配合数据库查看文件位置
(4) find:搜索硬盘查询文件名称
find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
find /etc -name httpd.conf #在/etc目录下文件httpd.conf
find /etc -name '*srm*' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件
(1)总核数 = 物理cpu个数 * 每个物理cpu的核数
(2)总逻辑cpu数 = 物理cpu个数 * 每个物理cpu的核数 * 超线程数
(3)查看物理cpu个数: cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
(4)查看每个cpu中core的个数,即核数:cat /proc/cpuinfo | grep "cpu cores" | uniq
(5)查看逻辑cpu数:cat /proc/cpuinfo | grep "processor" | wc -l
source 命令是 bash shell 的内置命令,从 C Shell 而来。
source 命令的另一种写法是点符号,用法和 source 相同,从Bourne Shell而来。
source 命令可以强行让一个脚本去立即影响当前的环境。
source 命令会强制执行脚本中的全部命令,而忽略文件的权限。
source 命令通常用于重新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。
source 命令可以影响执行脚本的父shell的环境,而 export 则只能影响其子shell的环境。
方法1 :
让/etc/profile文件修改后立即生效 ,可以使用如下命令:
. /etc/profile 注意: . 和 /etc/profile 有空格
方法2:
让/etc/profile文件修改后立即生效 ,可以使用如下命令:
# source /etc/profile
附:Linux中source命令的用法
source命令:
source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
用法:
source filename 或 . Filename
Ubuntu中Apache的配置文件是/etc/apache2/apache2.conf。Apache在启动时会找到这个文件并自动读取该文件中的配置信息,而其他配置文件则是通过include指令包含进来的,在apache2.conf中可以看到这些引入行。当然,也可以将所有的配置全放在apache2.conf或者httpd.conf或者其他文件中,Apache这样划分是一种比较好的习惯。
在Ubuntu中Web文档的根目录是在/var/www中,怎么知道的呢?在/etc/apache2/sites-enabled/000-default中有这样一段内容
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
这是设置虚拟机的,当然,如果觉得没有用的,也可以将apache2.conf里的一行注释掉,并在htttpd.conf中的DocumentRoot设置成某个项目的目录,这样可以方便开发
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
在/etc/apache2目录下,sites-available这个目录包含Apache虚拟主机的配置文件。虚拟主机允许Apache配置多个站点并为每个站点配置不同的参数。而sites-enabled目录的作用是持有/etc/apache2/sites-available目录下文件的链接。当Apache重启后,该目录中包含的站点将会被激活。如果apache上配置了多个虚拟机,每个虚拟机的配置文件都放在sites-available下,那么对于虚拟主机的停用,启动就是非常方便了,操作某个虚拟主机就不用动配置文件了
cd /etc/apache2/sites-available //进入目录
sudo cp 000-default.conf xxx.conf //复制并重命名为xxx
sudo vim xxx.conf //打开文件编辑
修改:
(1) ====》修改为自己的端口号,修改完需要同步设置/etc/apache2/ports.conf添加新的Listen
(2)#ServerName www.example.com ====》修改为前面自己设置的hosts
(3)DocumentRoot /var/www/html ====》修改为自己的目录位置如:/home/ubuntu/temp
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
用file:///加上对应文件的地址,打开对应的本地电脑(或者你所连接到的电脑的 ->中对应的文件
表明访问你的本地硬盘上的某个文件。比如假设你安装了win98在C盘,那么在浏览器里输入file:///c:/windows/readme.htm,那么IE会自动重定向到c:\windows\readme.htm文件并显示它.
sudo apt-get install curl openssh-server ca-certificates postfix
在Postfix安装期间,可能会出现配置屏幕。选择“Internet Site”并按Enter键。使用服务器的外部DNS作为“邮件名称”,然后按Enter键。如果出现其他屏幕,请继续按Enter键接受默认值
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
sudo dpkg -i gitlab-ce_*****ce.0_amd64.deb //执行安装
sudo gitlab-ctl status
sudo vim /etc/gitlab/gitlab.rb
external_url 'http://localhost'
行为指定ip;修改sudo vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
行listen "127.0.0.1:8080"
sudo gitlab-ctl reconfigure
sudo gitlab-ctl uninstall
sudo dpkg -r gitlab-ce
sudo systemctl disable gitlab-runsvdir.service
sudo systemctl enable gitlab-runsvdir.service
sudo gitlab-ctl status
sudo gitlab-ctl start
sudo gitlab-ctl stop
sudo gitlab-ctl restart
,启动失败,尝试执行:sudo systemctl start gitlab-runsvdir
git 地址:http://192.168.0.64
群组:007(用来添加组内成员)
通过网页生成一个和项目相同名字的git仓库:
git init
git status
git add .
git status
git commit -m " Project Describe"
git status
git remote add origin [email protected]:051/051_video_monitor_system.git //远程仓库取别名为origin
git remote -v //显示
git push -u origin master //上传到分支
命令 | 含义 |
---|---|
master分支 | 用于存放软件的稳定版本 |
dev分支 | 用于存放开发的版本 |
git push origin dev:dev | 把本地的dev分支发布到了远程仓库 |
git checkout master // 在合并之前切换到master分支
git merge dev //把dev分支的代码合并到master分支上
git push //提交刚刚的操作到远端github仓库
git checkout dev //切回dev分支进行下一步的开发
进入项目–》设置–》通用–》高级–》删除
1. 登录到git服务器:sudo 192.168.245.10
2. 切换git用户:su - git
3. 输入 gitlab-rails console production 进入gitlab控制台
-sh-4.2$ gitlab-rails console production
\-------------------------------------------------------------------------------------
GitLab: 11.6.3 (bc9391c)
GitLab Shell: 8.4.3
postgresql: 9.6.11
\-------------------------------------------------------------------------------------
Loading production environment (Rails 5.0.7)
irb(main):001:0>
4. 输入:user = User.where(id:23).first 通过id号找到user irb(main):018:0> user = User.where(id:23).first
5. user.password='新密码'
6. user.save! 保存
7. exit 退出
(1)运行svn:提示是否已安装
卸载命令:sudo apt-get remove –purge subversion //--purge 表示彻底删除团建和相关文件
(2)sudo apt-get install subversion //whereis svn 查看位置
(3)qt svn设置:
1)subversion命令:这里设置svn命令所在的位置
2)输入用户名和密码:在服务器的的配置文件中修改:~/.subversion/auth/svn.simple/
(4)相关命令
1)查看版本仓库 svn ls svn://192.168.245.1/_PROJECTS_CV
To install version X.X globally from source:
$ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
$ tar xvfz virtualenv-X.X.tar.gz
$ cd virtualenv-X.X
$ sudo python setup.py install
$ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
$ tar xvfz virtualenv-X.X.tar.gz
$ cd virtualenv-X.X
$ python virtualenv.py myVE
./configure --prefix=/opt/Qt-4.8.7/
make -j2
sudo make install
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/brody/software/Qt/qt-src-4.8.7/mkspecs/linux-g++.
sudo apt-get install libX11-dev libXext-dev libXtst-dev
添加环境变量(不强制添加);添加后可在debug工程目录中直接执行生成的二进制文件,因为Qt库文件在环境变量的存在。
export QTDIR=/opt/Qt-4.8.7/
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
在.pro文件中添加:
(1) QMAKE_CXXFLAGS += -std=c++11 在4.8.7中此方案无效
(2) CONFIG += c++11
(1)直接路径+文件名:
LIBS+= /usr/local/libopencv_core.so
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv \
/usr/local/include/opencv2
(2) 路径-L: LIBS+= -L/usr/local 文件名-l: LIBS+= -lpencv_core
LIBS += -L/usr/local/lib \
-lopencv_core \
-lopencv_features2d \
-lopencv_flann \
-lopencv_calib3d \
-lopencv_highgui \
-lopencv_imgproc \
-lopencv_legacy \
-lopencv_nonfree \
-lopencv_objdetect \
-lopencv_stitching
(1) tools>options>Build and Run然后选择Qt Versions,点击添加,加入刚编译好的Qt的qmake执行文件
(2) 选择构建套件(Kits),手动添加一个命名名称为Qt4.8.6,GCC,GDB会自动检测,下拉滑到Qt版本选项,
这里需要指定Qt Version,默认是None,下拉选择刚刚添加的的Qt 4.8.6的版本
发现是由于新项目没有执行(构建—>执行qmake命令),正确的运行顺序应该是:qmake-构建-运行
ubuntu@master:~$ locate libGL.so
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
ubuntu@master:~$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so
CONFIG配置信息,pkg-config是linux下的一个命令,用于获取某一个库/模块的所有编译相关的信息,在源码编译时,如编译opencv只需要写 pkg-config opencv –libs --cflags而不需要自己去找opencv头文件和链接库位置,pkg-config 的信息来自 /usr/lib/pkgconfig 或 /usr/lib/x86_64-linux-gnu/pkgconfig 文件夹下的 *.pc 文件或者PKG_CONFIG_PATH环境变量路径下的 *.pc文件
CONFIG += link_pkgconfig
PKGCONFIG += glib-2.0
创建工程,在pro中添加sql模块
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("");
db.setUserName("");
db.setPassword("");
if(!db.open())
{
qDebug()<<"connect failed";
qDebug << QSqlDatabase :: drivers(); //打印支持的驱动
QSqlDatabase db(QSqlDatabase::addDatabase("QMYSQL"));
qDebug << db.lastError; //打印连接错误
}else
{
qDebug()<<"connect success";
}
执行以上代码编译出现以下错误:说明现有驱动所不满足的依赖性,故要重新编译
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL QMYSQL3 QODBC
在qt安装目录(源码目录):/home/Qt4.8.6/src/plugins/sqldrivers/mysql,修改mysql.pro文件,添加需要连接的mysql服务器对应的头文件和库目录文件,即
INCLUDEPATH += /usr/local/mysql/include
LIBS+= -L/usr/local/mysql/lib -lmysqlclient_r
之后执行:
/opt/Qt4.8.6/bin/qmake ./mysql.pro //指定对应的qmake版本执行
make //生成库libqsqlmysql.so
sudo cp libqsqlmysql.so /opt/Qt4.8.6/plugins/sqldrivers //复制到qt中
当编译出现以下错误时:
libssl.so.10->not found
libcrypto.so.10->not found
执行find /usr -name 'libssl*'
没有相关文件则sudo apt-get install libssl-dev
;sudo apt-get install openssl
;有相关文件但是对应的版本不对,则进行软连接;
添加–enable-shared 生成动态库
Qt的语言库,缺少支持中文输入的动态链接库。
dpkg -L fcitx-frontend-qt5
path是用来搜索所执行的可执行文件路径的,如果执行的可执行文件不在当前目录下,那就会依次搜索path中设置的路径
classpath是指定你在程序中所使用的类(.class)文件所在的位置,就如在引入一个类时:import javax.swing.JTable这句话是告诉编译器要引入javax.swing这个包下的JTable类,而classpath就是告诉编译器该到哪里去找到这个类(前提是你在classpath中设置了这个类的路径);如果你想要编译在当前目录下找
1.安装:
(1)./configure --prefix=/home/software/python36
(2)make -j2
(3) make altinstall
配置环境变量
linux环境变量分为临时和永久两种,临时环境变量在切换用户或终端时失效。永久环境变量分为用户级别和系统级别两种,系统级别修改/etc/profile文件,用户级别修改vim /.bash_profile
如: export CLASSPATH=./JAVA_HOME/lib; J A V A H O M E / j r e / l i b 添 加 : e x p o r t P A T H = JAVA_HOME/jre/lib 添加:export PATH= JAVAHOME/jre/lib添加:exportPATH=PATH:/home/software/python36/bin
立即生效
方法1: 让/etc/profile文件修改后立即生效 ,可以使用如下命令: # . /etc/profile 注意: . 和 /etc/profile 有空格
方法2: 让/etc/profile文件修改后立即生效 ,可以使用如下命令: # source /etc/profile
cmake -D CMAKE_BUILD_TYPE=Release
-D CMAKE_INSTALL_PREFIX=/opt/opencv-3.4.0
-D OPENCV_EXTRA_MODULES_PATH=/home/opencv-3.4.0/opencv_contrib-3.4.0/modules/
-D INSTALL_PYTHON_EXAMPLES=ON ..
cmake的时候,有些contrib模块编译时需要的文件可能下载不下来,具体信息可以到build目录下CMakeDownloadLog.txt查看,去对应网址下载好文件放到opencv-3.4.0/.cache目录下(注意这是个隐藏文件)的对应文件夹里,并重命名(加上前面的一串字符,注意要一一对应),再重新cmake。这里我将自己下载的缺少的文件(data,ippicv,tiny_dnn,dnn_face_detector,xfeatures2d)
如果联网会在主文件夹下生成.cache文件夹下载需要文件,把相应的*.i文件拷贝到opencv_contrib/modules/xfeatures2d/src目录下,注意文件命名要和opencv_contrib-3.4.0/modules/xfeatures2d/src/vgg.cpp:474行相同
/home/opencv-3.4.0/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42:
fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
#ifdef HAVE_OPENCV_XFEATURES2D # include "opencv2/xfeatures2d/cuda.hpp" #endif
说明头文件位置不对,拷贝过来即可:
make -j
sudo make install
工具安装和使用
[Desktop Entry]
Name=Typora
GenericName=Editor
Comment=Typroa - a markdown editor
Exec="/opt/Typora-linux-x64/Typora" %U
Icon=/opt/Typora-linux-x64/resources/app/asserts/icon/icon_256x256.png
Terminal=false
Categories=Markdown;
StartupNotify=false
Type=Application
[root@localhost /]# useradd haha #创建用户 haha是用户名
[root@localhost /]# passwd haha #为该用户设置密码
更改用户 haha 的密码
新的 密码:******
[root@localhost /]# userdel -r haha
ls -al /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 12月 25 08:54 /dev/ttyS0
grep 'dialout' /etc/group
dialout:x:20:
sudo chmod 777 /dev/ttyUSB0
whoami //查看当前用户
sudo adduser ubuntu dialout
//使用sudo usermod -aG dialout ubuntu 出现错误usermod:“ dialout”组不存在
sudo apt-get install sysv-rc-conf //安装和使用sysv-rc-conf工具
1. c --level 2345 mysql off //执行
2. sysv-rc-conf //执行弹出选项框,手动进行选择,如下用键盘方向键定位,用空格键选择,
//“X”表示开启该服务,用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出
0 系统停机状态
1 单用户或系统维护状态
2~5 多用户状态
6 重新启动
dirname 命令读取指定路径名删除最后一个“/”(斜杠)及其后面的字符,保留其他部分,并写结果到标准输出。如果最后一个“/”后无字符,dirname 命令使用倒数第二个“/”,并忽略其后的所有字符。dirname 命令在创建路径名的时候遵从以下规则:
dirname // ------>结果为 /(斜杠)
dirname /a/b/ ------>结果为:/a
dirname a ------>结果为 . (点)
dirname a/b ------>结果为路径名 a
示例一: # /usr/bin为获取到的目录
[root@local ~]# dirname /usr/bin/sort
/usr/bin
示例二: # 如无/则获取当前目录.
[root@local ~]# dirname stdio.h
.
示例三: # 含/和无/,其结果和不含/效果一样的
[root@local ~]# dirname /usr/bin
/usr
[root@local ~]# dirname /usr/bin/
/usr
示例四: # 获取多个目录列表,以换行为分隔
[root@local ~]# dirname dir1/file1 dir2/file2
dir1
dir2
示例五: # 获取多个目录列表,以NUL为分隔
[root@local ~]# dirname -z dir1/file1 dir2/file2
dir1dir2
!/bin/bash
# 跳转到脚本所在目录
cd $(dirname "$0") || exit 1
# 对上面的脚本的解释
$0 当前Shell程序的文件名
dirname $0 获取当前Shell程序的路径
cd $(dirname $0) 进入当前Shell程序的目录
exit 1 如果获取不到则退出脚本
basename命令用于去掉文件名的目录和后缀(strip directory and suffix from filenames),对应的dirname命令用于截取目录
示例一 # 获取到最后文件名sort
[root@local ~]# basename /usr/bin/sort
sort
示例二 # 去除文件名后缀
[root@local ~]# basename /usr/include/stdio.h .h
stdio
[root@local ~]# basename /usr/include/stdio.h stdio.h
stdio.h
示例三 # 去除文件名后缀方式的另外一种方法
[root@local ~]# basename -s .h /usr/include/stdio.h
stdio
示例四 # 获取多个目录下的文件列表,以换行符\n为分隔
[root@local ~]# basename -a dir1/file1 dir2/file2
file1
file2
示例五 # 获取多个目录下的文件列表,以NUL为分隔
[root@local ~]# basename -a -z dir1/file1 dir2/file2
file1file2