手册地址:https://download.csdn.net/download/Zm1366172479/87216900
https://download.csdn.net/download/Zm1366172479/87216900
1、目录结构
1、bin文件:二进制文件,可以被运行
2、dev文件:外部设备文件
3、home文件:可以在其它位置——计算机 看到
4、root文件:root家文件。
2、指令
打开终端:ctrl+alt+T
格式:命令 选项 操作对象
注意:选项和操作对象不是必须的,同时也不一定必须一个
1、pwd (print current working directory)
作用:打印当前终端中的目录
2、ls (list directory contents)
作用:列出当前工作目录下的所有文件名称
用法1:ls
用法2:ls 路径
例如:
- ls ./ 表示当前目录
- ls ../上一级目录下
- ls /home 绝对路径
用法3:ls -lah /home
- 解释:l:list a:all h:high 以详细的可读性较高的方式显示所有文件
- 注意:开头是d是文件夹 -的话是文件 .开头是隐藏文件
3、ctrl+L
作用:清屏
4、cd (change directory)
作用:切换当前目录
用法1:cd 进入家目录
用法2:cd.. 进入上级目录下
cd../local 进入上级目录下的 local文件中
用法3:cd /home/gzm 进入gzm文件夹 绝对文件夹
5、mkdir (make directories)
作用:创建文件夹
用法1:mkdir 文件夹名字 创建文件夹
用法2:mkdir -p -/a/b/c 创建a b c 多层目录
用法3:mkdir a b c 创建a b c 三个文件夹
6、tree 显示目录结构
用法:tree 文件夹
7、torch 创建文件
用法1:torch linux.txt 在当前文件夹创建该文件
用法2:torch ../linux 在上级目录创建该文件
用法3:torch /home/gzm/linux.txt 在gzm创建该文件
8、rm (remove file or directories)
作用:删除文件
用法1:rm 文件名
用法2:rm /home/文件名
用法3:rm -rf a 删除a文件夹
9、cp (copy file and directories)
作用:复制文件
用法1:cp 被复制的文件 复制到的路径 cp /home/gzm ./
用法2:cp -r 被复制的文件夹 复制到的路径
10、mv (move file)
作用:移动文件
用法1:mv 文件 移动到的路径
11、man (manuals)
man 命令 对该命令的解释
3、文件编辑
1、vim文件
- vim +文件名 打开文件
- i 开始输入
- :w保存
- :q推出
设置行号:set nu
2、getdit
4、开发环境创建
一般都先执行:sudo apt update (super user do 更新软件包)
安装软件:sudo apt install build-essential gdb
查看版本:gcc --version
安装cmake:sudo apt install cmake
5、编译过程
以下四步可以一步实行:g++ test.cpp -o test
1、预处理 .i文件
- 作用:指示编译器仅对输入文件进行预处理
- 用法:g++ -e test.cpp -o test.i
2、编译 .s文件
- 作用:将c产生汇编语言
- 用法:g++ -s test.i -o test.s
3、汇编 .o文件
- 作用:生成机器语言
- 用法:g++ -c test.s -o test.o
4、链接 bin文件
- 作用:产生可执行文件
- 用法:g++ test.o -o test
6、g++编译参数
1、-g
作用:产生带调试信息的可执行文件test,这样可以被gnu调试器GDB使用的调试信息
方法:g++ -g test.cpp -o test
2、-o
作用:优化代码
3、-l和-L
-l:指定程序要连接的库,-l参数接着的是库名(需要在/lib /usr/lib 和/usr/local/lib里的库)
-L:跟着不在上述目录的库文件所在目录
用法:
g++ -lglog test.cpp
g++ -L /home/lglog test.cpp
4 -I
功能:指定头文件搜索目录
g++ -I/myinclude test.cpp
5、-Wall
功能:打印警告信息
g++ -wall test.cpp
6、-w
功能:关闭警告信息
7、-std=c++11
功能:设置编译标准
用法:g++ -std=c++11 test.cpp
8、-o
功能:指定输出文件名
用法:g++ test.cpp -o test
注意:若不输入 -o test 则输出a.out文件
9、-D
功能:定义宏
7、编译操作
1、编译:
g++ main.cpp test.cpp -Ipath
注意(path是头文件所在文件夹)
8、GDB调试器
1、主要功能
- 设置断点
- 单步执行
- 查看变量的值
2、进入gdb代码:gdb 要调试的文件
3、常用命令
- ctrl +x ,ctrl+a 进入tui模式,方便调试
- b(break) 13:13行添加断点
- ib(info breakpoints):查看在哪打断点
- pi(print i)打印 i的值
- c(continue):继续运行
- display a:对a监视
- l(list)查看附近的源代码
- r:重新运行程序
- l:查看源代码
- n:执行下一行
- s:跳入函数执行
- f:结束当前函数
- i:查看局部变量的值
- p:打印值
- q:退出
注意:必须是编译时加上-g gcc -g main.c -o main
9、小工具
功能:产生运行test的时间
用法:time ./test
10、VScode
1、ctrl+shift+p 控制面板
2、ctrl+shift+i 代码格式化
3、编译调试还是在终端进行,用g++ cpp文件 cpp文件2 -Iinlude -o 输出文件名
11、注意事项
1、linux创建文件路径
#include <sys/types.h>
#include <sys/stat.h>
namespace light
{
int mkpath(std::string s, mode_t mode = 0755)
{
size_t pre = 0, pos;
std::string dir;
int mdret;
if (s[s.size() - 1] != '/') {
// force trailing / so we can handle everything in loop
s += '/';
}
while ((pos = s.find_first_of('/', pre)) != std::string::npos) {
dir = s.substr(0, pos++);
pre = pos;
if (dir.size() == 0) continue; // if leading / first time is 0 length
if ((mdret = ::mkdir(dir.c_str(), mode)) && errno != EEXIST) {
return mdret;
}
}
return mdret;
}
}
int main()
{
int ftyp = access(OutPath.c_str(), 0);
//创建文件夹
int mkdirretval;
mkdirretval = light::mkpath(OutPath);
}
12、程序运行流程:
- 获取所有权限: chmod -R 777 地址
- 指定库位置:export LD_LIBRARY_PATH=地址
- 运行程序:可执行文件 参数13
13、连接XFTP
在linux系统输入ifconfig,其中ens33下面的ineit为账号,账号密码为登陆linux系统的账号和密码
14、GDAL centos(Linux)版本安装
GDAL安装:
下载地址:DownloadSource – GDAL (osgeo.org)
1、代码方式下载gdal
cd /storage/software/gdal
wget -c http://download.osgeo.org/gdal/2.2.1/gdal-2.2.1.tar.gz
2. 解压源码、进入解压包:
# tar xvf gdal-2.2.1.tar.gz
# cd gdal-2.2.1
3. 安装编译需要的库:(这一步没做)
# yum install -y gcc make subversion gcc-c++ sqlite-devel libxml2-devel swig expat-devel libcurl-devel python36-devel
4、执行配置、编译、安装:
./configure
make
make install
5、检验
gdalinfo --version
注意:若出现以下错误,则需要安装jasper 方法如下
(1)下载https://links.jianshu.com/go?to=http%3A%2F%2Fdownload.osgeo.org%2Fgdal%2Fjasper-1.900.1.uuid.tar.gz
(2)所有步骤,按顺序执行:
cd /storage/software/JasPer
wget http://download.osgeo.org/gdal/jasper-1.900.1.uuid.tar.gz
tar xvf jasper-1.900.1.uuid.tar.gz
cd jasper-1.900.1.uuid
./configure
make
make install
(3)待编译完成,在bashrc文件中添加库链接:
vi ~/.bashrc
export PATH=$PATH:/usr/local/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
编辑方法:您可以使用vim编辑器打开.bashrc文件,然后按下Shift + G
键跳转到文件的最后一行,然后按下o
键在下一行插入新的一行。输入完毕后,按下Esc
键退出插入模式,然后输入:wq
命令保存文件并退出编辑器。
(4)应用
source ~/.bashrc
15、VS连接linux
16 MakeFile编译
在源文件位置创建名为“Makefile”的文件。然后cd到当前文件夹后运行命令make。Makefile文件如下:
CC = g++
CFLAGS = -std=c++11 -I/root/projects/inc/GDAL -I/root/projects/inc/opencv -I/root/projects/inc/opencv/opencv2
LDFLAGS = -L/root/projects/lib -L/root/projects/lib
LDLIBS = -lgdal -lopencv_core -lopencv_imgproc -lopencv_highgui
SRCS = \
GlobalFunc.cpp \
Image.cpp \
matchfunction.cpp \
Matrix.cpp \
ParseParaFile.cpp \
ParseTaskFile.cpp \
PhaseMatching.cpp \
RPBprox.cpp \
RSImage.cpp \
SoftDog.cpp \
tinystr.cpp \
tinyxml.cpp \
tinyxmlerror.cpp \
tinyxmlparser.cpp
OBJS = $(SRCS:.cpp=.o)
EXECUTABLE = Matching
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
%.o: %.cpp
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(EXECUTABLE) $(OBJS)
解释:CFLAGS :包含文件位置,即include的位置
LDFLAGS :lib文件夹位置
LDLIBS :lib文件位置,不要前缀和后缀
SRCS :.cpp文件(h文件会自己检索不用管)
EXECUTABLE :输出文件名字