1.云计算? 相关职位
开源软件和linux起源:
- 自由软件之父:理查德.斯托曼
- linux之父:林纳斯.本纳第克特.托瓦兹
linux发行版
- RHEL:Red Hat Enterprise Linux 红帽linux商业公司
- CentOS:Community Enterprise Operating System 社区企业操作系统 免费的商业软件
- Ubuntu:桌面应用为主的开源GUN/Linux操作系统
- Debian
RHCE:红帽认证工程书
- RHCSA:红帽认证系统管理员
- RHCE:红帽认证工程师
- RHCA:红帽认证架构师
服务器分类:
- 塔式服务器
- 机架式服务器
- 刀片服务器
VMware-真机服务器
启动分区 交换分区 系统分区
处理Centos7/8系统输入用户名密码后界面卡住故障记录:设置用户名有限制
注销设置的用户-以超级管理员root登录
设置网卡-网络连接
XShell链接虚拟机
一次性创建多个文件touch file{yufeng,a,c}
拍摄快照
文件管理
cd /到根目录
bin:普通用户使用,二进制 boot:启动 dev:硬件 etc:设备文件 home:用户主目录 root:root用户的HOME run:临时 sbin:特权
tmp:临时 usr:应用程序 var:日志,邮件
文件类型
- 普通文件(文本文件,二进制文件,压缩文件,电影,图片)
d 目录文件(蓝色)
命令 选项 参数 ls / ls -l /
ctrl+l清屏
yum install tree
touch 路径和名字
mkdir -p 路径文件 :连续创建
cp 源文件路径 目标文件 :复制
table键补齐目录 两次tab键列出所有
cp -r 源文件 目标文件 :是否将源文件夹下的所有都拷贝
cd ~:进入根目录下的root文件夹
为什么用Cmake?(跨平台)
- CMakeLists.txt
- 普通用户,cd ~ 相当于cd /home/当前用户名
- cd - 返回进入此目录之前所在目录
- c++ main.cpp 编译,查看错误
- vim main.cpp创建并编辑
- ./a.out运行
- vim CMakeLists.txt
PROJECT(HELLO) SET(SRC_LIST main.cpp) MESSAGE(STATUS "This is BINARY dir" ${HELLO_BINARY_DIR}) MESSAGE(STATUS "This is SOURCE dir" ${HELLO_SOURCE_DIR}) ADD_EXECUTABLE(hello ${SRC_LIST}) ~
- cmake .生成Makefile文件
- make编译
- ./hello可执行文件
- rm -rf 文件名
- unzip解压文件
- cmake ../PIX2FACE_SRC_DIR
语法:
PROJECT关键字可以用来指定工程的名字和支持的语言,默认支持所有语言
PROJECT(HELLO)指定了工程的名字,并且支持所有语言建议
PROJECT(HELLO CXX)指定了工程的名字,并且支持语言是C++
PROJECT(HELLO C CXX)指定了工程的名字,并且支持语言是c和c++
该指定隐式定义了两个CMAKE变量
<projectname>_BINARY_DIR,本例中是HELLO_BINARY_DIR
<projectname>_SOURCE_DIR,本例中是HELLO_SOURCE_DIR
MESSAGE关键字就可以直接使用两个变量
SET关键字
用来显示的指定变量的
SET(SRC_LIST main.cpp)SRC_LIST变量就包含了main.cpp
MESSAGE关键字
向终端输出用户自定义的信息
主要包含三种信息:
- SEND_ERROR,产生错误,生成过程被跳过
- STATUS,输出前缀为-的信息
- FALTAL_ERROR,立即终止所有cmake过程
ADD_EXECUTABLE关键字
生成可执行文件
ADD_EXECUTABLE(hello ${SRC_LIST}) 生成的可执行文件是hello,源文件读取变量SRC_LIST中的内容也可以直接写ADD_EXECUTABLE(hello main.cpp)
内部构建和外部构建
- 上述例子使用的内部构建,他生成的临时文件特别多,不方便清理
- 外部构建,就会把生成的文件放在build目录下,不会对原文件有任何影响
cmake ..
让Hello World看起来更像一个工程
- 为工程添加一个子目录src,用来放置工程源代码
- 添加一个子目录doc,用来放置这个工程的文档hello.txt
- 在工程目录添加文本文件 COPYRIGHT,README
- 在工程目录添加一个runhello.sh脚本,用来调用hello二进制
- 将构建后的目标文件放入构建目录的bin子目录
- 将doc目录的内容以及COPYRIGHT/README安装到、usr/share/doc/cmake/
echo "">CMakeLists.txt:清除文件内容
cat CMakeLists.txt:查看文件内容
安装:
- 一种是从代码编译后直接make install安装
- 一种是打包时的指定目录安装
简单的可以这样指定目录:make install DESTDIR=/tmp/test
稍微复杂一点的可以这样指定:./configure-prefix=/usr
如何安装HelloWorld
使用CMAKE一个新的指令:INSTALL
INSTALL的安装可以包括:二进制,动态库,静态库以及文件,目录,脚本等
使用CMAKE一个新的变量:CMAKE_INSTALL_PREFIX
project(hello) add_subdirectory(src bin) install(FILES COPYRIGHT README DESTINATION share/doc/cmake/) install(PROGRAMS runhello.sh DESTINATION bin) install(DIRECTORY doc/ DESTINATION share/doc/cmake/)
FILES:文件
DESTINATION:
- 写绝对路径
- 可以写相对路径,相对路径的实际路径是:${CMAKE_INSTALL_PREFIX}/<DESTINATION 定义路径>
CMAKE_INSTALL_PREFIX 默认实在 /usr/local/
cmake-DCMAKE_INSTALL_PREFIX=/usr 在cmake的时候指定CMAKE_INSTALL_PREFIX的路径
静态库和动态库的构建
任务:
- 建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,hellofunc向终端输出Hello World字符串
- 安装头文件和共享库
静态库和动态库的区别
- 静态库的扩展名一般为”.a“或”.lib“动态库的扩展名一般为”.so“或”.dll“
- 静态库在编译时会直接整合到目标程序中,编译成功的可执行文件可独立运行
- 动态库在编译时不会放到连接的目标程序中,即可执行文件无法单独运行
构建实力:
project(hello) add_subdirectory(lib bin)
lib下
SET(LIBHELLO_SRC hello.cpp) ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})
ADD_LIBRARY
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})
hello :就是正常的库名,生成的名字前面会加上lib,最终产生的文件是libhello.so
SHARED,动态库 STATIC,静态库
${...} 源文件