常用命令总结,逐步修改中...

Linux常用命令

# 查看前几行
head --lines=2 README.md

# 查看尾几行
tail --lines=2 README.md

# ctrl a 将光标快速移动到命令行的开头
# ctrl e 将光标快速移动到命令行的末尾
# 查看全文 q退出 可上下翻滚
less README.md

shell脚本

${ff#week} # 掐头,把ff前面的week去掉
${ff%week} # 去尾,把ff尾部的week去掉

makefile

源文件

// functions.h ///
#ifndef _FUNCTIONS_H_
#define _FUNCTIONS_H
void printhello(); 
int factorial(int n);
#endif

// factorial.cpp //
# include "functions.h"
int factorial(int n) {
    if (n == 1) return 1;
    else return n * factorial(n -1);
}

// printhello.cpp //
# include "functions.h"
using namespace std; 
void printhello() {
    int i; 
    cout << "Hello World!"<< endl;
}

/// main.cpp ///
#include "functions.h"
using namespace std;
int main() {
    printhello(); 
    cout << "This is main:"<< endl;
    cout << "The factorial of 5 is: "<< factorial(5) << endl; 
    return 0;
}

C++编译

g++ main.c factorial.cpp factorial.cpp -o main # 一步到位

# 1.预编译

# 2.编译
g++ main.cpp -c 
g++ factorial.cpp -c
g++ printhello.cpp -c
## result: 生成 main.o 和 printhello.o 和 factorial.o 

# 3.链接
g++ *.o -o main  # 将所以.o文件链接在一起
## result:生成可执行文件 main

# 4.执行
./main

Makeflie内容:

######################## VERSION 1 ############################
# 生成 hello 的目标,目标依赖于 main.cpp printhello.cpp factorial.cpp 
hello: main.cpp printhello.cpp factorial.cpp 
# (注意tab) 用下列命令生成
	g++ -o hello main.cpp printhello.cpp factorial.cpp
	
	
######################## VERSION 2 ############################
CXX = g++	# 指定编译器
TARGET = hello	# 目标文件 
OBJ = main.o printhello.o factorial.o	# 

$(TARGET): $(OBJ)	# TARGET 依赖于 OBJ ,
$(CXX) -o $(TARGET) $(OBJ)

main.o: main.cpp
	$(CXX) -c main.cpp 
printhello.o: printhello.cpp
	$(CXX) -c printhello.cpp
factorial.o: factorial.cpp 
	$(CXX) -c factorial.cpp
	
	
######################## VERSION 3 ############################
CXX = g++
TARGET = hello 
OBJ = main.o printhello.o factorial.o 
CXXFLAGS = -c -Wall		# 编译选项( -c 是生成.o文件, -Wall 启用编译器的所有警告信息)

$(TARGET): $(OBJ)
	$(CXX) -o $@ $^		# $@ 这里表示 $(TARGET),$^ 这里表示 $(OBJ)
%.o: %.cpp
	$(CXX) $(CXXFLAGS) $< -o $@		# $< 这里表示 %.cpp 的第一个,$@ 这里表示 %.o
.PHONY: clean 				# 防止 make clean 歧义,存在clean文件夹 
clean:
	rm -f *.o $(TARGET)		# make clean 之后执行这句

######################## VERSION 4 ############################
CXX = g++
TARGET = hello 
SRC = $(wildcard *.cpp)				# 当前目录下所有的 cpp 文件
	  # patsubst 路径替换,将$(SRC)下的所有.cpp文件替换成.o文件
OBJ = $(patsubst %.cpp, %.o, $(SRC))	
CXXFLAGS = -c -Wall		# 编译选项( -c 是生成.o文件, -Wall 启用编译器的所有警告信息)

$(TARGET): $(OBJ)
	$(CXX) -o $@ $^		# $@ 这里表示 $(TARGET),$^ 这里表示 $(OBJ)
%.o: %.cpp
	$(CXX) $(CXXFLAGS) $< -o $@		# $< 这里表示 %.cpp 的第一个,$@ 这里表示 %.o
.PHONY: clean 				# 防止 make clean 歧义,存在clean文件夹 
clean:
	rm -f *.o $(TARGET)		# make clean 之后执行这句

执行命令

# 当前目录下执行
make	# 如果当前目录下不是Makefile,可以使用 make -f Makefile

# 清理.o 和可执行文件
make clean

Cmake

CmakeList.txt内容:

cmake_minimum_required(VERSION 3.10)
project(hello)
add_executable(hello main.cpp factorial.cpp printhello.cpp)

执行:

mkdir build
cd build
cmake ..  # 上一层目录上寻找,在 build 中生成 Makefile
make 	  # 编译 Makefile

zip函数

这些函数主要来自 libzip 库,用于处理 .zip 文件。

1. zip_open

zip* za = zip_open(zipFilePath.c_str(), ZIP_RDONLY, &err);
  • 功能: 打开一个 .zip 文件。
  • 参数:
    • zipFilePath.c_str(): 要打开的 .zip 文件的路径。
    • ZIP_RDONLY: 以只读模式打开压缩包。
    • &err: 用于存储错误码的指针。如果打开失败,err 会被设置为相应的错误码。
  • 返回值: 返回一个指向 zip 结构体的指针,如果打开失败,则返回 nullptr

2. zip_get_num_entries

zip_int64_t num_entries = zip_get_num_entries(za, 0);
  • 功能: 获取 .zip 文件中包含的条目数量,即压缩包中包含的文件或目录的数量。
  • 参数:
    • za: 指向打开的 zip 结构体的指针。
    • 0: 此参数用于控制列出压缩包中的内容,通常设置为 0
  • 返回值: 返回 .zip 文件中包含的条目数量。

3. zip_get_name

const char* name = zip_get_name(za, i, 0);
  • 功能: 获取 .zip 文件中某个条目的名称。
  • 参数:
    • za: 指向打开的 zip 结构体的指针。
    • i: 条目的索引,从 0 开始。
    • 0: 此参数用于控制是否返回压缩包中的名称,通常设置为 0
  • 返回值: 返回指向条目名称的指针(C字符串)。如果索引无效或发生错误,则返回 nullptr

4. zip_stat

zip_stat_t st;
if (zip_stat(za, "version.json", 0, &st) == 0) {
    // version.json 文件存在
}
  • 功能: 获取指定条目的详细信息。
  • 参数:
    • za: 指向打开的 zip 结构体的指针。
    • "version.json": 要获取信息的文件名称。
    • 0: 额外的选项,通常设置为 0
    • &st: 一个 zip_stat_t 结构体,用于存储条目的详细信息(如大小、压缩方式等)。
  • 返回值: 成功时返回 0,失败时返回 -1

5. zip_close

zip_close(za);
  • 功能: 关闭 .zip 文件,释放资源。
  • 参数:
    • za: 指向打开的 zip 结构体的指针。
  • 返回值: 成功时返回 0,如果失败则返回 -1

总结

  • zip_open: 用于打开 .zip 文件。
  • zip_get_num_entries: 获取压缩包内的条目数量。
  • zip_get_name: 获取压缩包内指定条目的名称。
  • zip_stat: 获取压缩包内某个文件的详细信息。
  • zip_close: 关闭 .zip 文件并释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值