Files
multitls/Makefile

134 lines
3.9 KiB
Makefile
Raw Permalink Normal View History

2025-10-14 20:06:34 +08:00
# 支持通过参数传入CC编译器默认使用gcc
CC ?= gcc
CFLAGS = -Wall -Wextra -std=c99 -O2
LDFLAGS = -lssl -lcrypto -lpthread
# 目标文件
SERVER_TARGET = tls_server
CLIENT_TARGET = tls_client
TEST_TARGET = test_long_message
SERVER_SOURCE = tls_server.c
CLIENT_SOURCE = tls_client.c
TEST_SOURCE = test_long_message.c
# 默认目标
all: $(SERVER_TARGET) $(CLIENT_TARGET) $(TEST_TARGET)
# 编译服务器
$(SERVER_TARGET): $(SERVER_SOURCE)
$(CC) $(CFLAGS) -o $(SERVER_TARGET) $(SERVER_SOURCE) $(LDFLAGS)
# 编译客户端
$(CLIENT_TARGET): $(CLIENT_SOURCE)
$(CC) $(CFLAGS) -o $(CLIENT_TARGET) $(CLIENT_SOURCE) $(LDFLAGS)
# 编译测试程序
$(TEST_TARGET): $(TEST_SOURCE)
$(CC) $(CFLAGS) -o $(TEST_TARGET) $(TEST_SOURCE) -lssl -lcrypto
# 生成证书
cert:
chmod +x generate_cert.sh
./generate_cert.sh
# 运行服务器默认端口8443
run: $(SERVER_TARGET) cert
./$(SERVER_TARGET)
# 运行服务器(指定端口)
run-port: $(SERVER_TARGET) cert
@echo "请输入端口号:"
@read port; ./$(SERVER_TARGET) -p $$port
# 测试客户端
test: $(CLIENT_TARGET)
@echo "测试客户端,发送消息 'Hello World'"
./$(CLIENT_TARGET) -m "Hello World"
# 测试循环客户端
test-loop: $(CLIENT_TARGET)
@echo "测试循环客户端发送5次消息间隔2秒"
./$(CLIENT_TARGET) -m "Loop Test" -c 5 -i 2
# 测试TLS 1.2
test-tls12: $(CLIENT_TARGET)
@echo "测试TLS 1.2连接"
./$(CLIENT_TARGET) -m "TLS 1.2 Test" -t 1.2
# 测试TLS 1.3
test-tls13: $(CLIENT_TARGET)
@echo "测试TLS 1.3连接"
./$(CLIENT_TARGET) -m "TLS 1.3 Test" -t 1.3
# 测试TLS版本对比
test-tls-compare: $(CLIENT_TARGET)
@echo "测试TLS版本对比"
@echo "=== TLS 1.2 测试 ==="
./$(CLIENT_TARGET) -m "TLS 1.2" -t 1.2 -c 2 -i 1
@echo ""
@echo "=== TLS 1.3 测试 ==="
./$(CLIENT_TARGET) -m "TLS 1.3" -t 1.3 -c 2 -i 1
@echo ""
@echo "=== 自动协商测试 ==="
./$(CLIENT_TARGET) -m "Auto TLS" -t auto -c 2 -i 1
# 测试并发连接
test-concurrent: $(CLIENT_TARGET)
@echo "测试并发客户端连接"
@echo "启动2个并发客户端..."
./$(CLIENT_TARGET) -m "Concurrent 1" -c 1 &
./$(CLIENT_TARGET) -m "Concurrent 2" -c 1 &
wait
@echo "并发测试完成"
# 测试长消息
test-long: $(TEST_TARGET)
@echo "测试长消息发送1000字符消息"
./$(TEST_TARGET) 1000
# 清理
clean:
rm -f $(SERVER_TARGET) $(CLIENT_TARGET) $(TEST_TARGET)
rm -rf cert/
# 安装依赖Ubuntu/Debian
install-deps:
sudo apt-get update
sudo apt-get install -y libssl-dev
# 安装依赖CentOS/RHEL
install-deps-centos:
sudo yum install -y openssl-devel
# 显示编译器信息
info:
@echo "当前编译器: $(CC)"
@echo "编译选项: $(CFLAGS)"
@echo "链接选项: $(LDFLAGS)"
# 帮助信息
help:
@echo "可用目标:"
@echo " all - 编译服务器、客户端和测试程序"
@echo " cert - 生成自签名证书"
@echo " run - 运行服务器端口8443"
@echo " run-port - 运行服务器(指定端口)"
@echo " test - 测试客户端连接"
@echo " test-loop - 测试循环客户端连接"
@echo " test-tls12 - 测试TLS 1.2连接"
@echo " test-tls13 - 测试TLS 1.3连接"
@echo " test-tls-compare - 测试TLS版本对比"
@echo " test-concurrent - 测试并发客户端连接"
@echo " test-long - 测试长消息发送"
@echo " clean - 清理生成的文件"
@echo " install-deps - 安装依赖Ubuntu/Debian"
@echo " info - 显示编译器信息"
@echo " help - 显示此帮助信息"
@echo ""
@echo "编译器参数:"
@echo " CC=clang make all - 使用clang编译器"
@echo " CC=gcc make all - 使用gcc编译器默认"
@echo " CC=cc make all - 使用系统默认编译器"
.PHONY: all cert run run-port clean install-deps install-deps-centos info help