admin 管理员组

文章数量: 887006

mongoose 搭建 http 服务

        今天想在公司环境下练习一下 mongoose 搭建 http 服务的代码,下载了 源码 但是编译出现了问题,记录一下。

1,头文件问题

找不到 json.h 头文件

下载下来已经有 json 源码,所以指定一下就可以了,修改 main.cpp,如:

 2,找不到 json 接口问题

Makefile 里添加库路径及库名称:-L../json -ljson 

 3,没有编译 mongoose.c 问题

如上图中的 mg_ 开头的函数是在 mongoose.c 里,这个得修改Makefile 了,原先的没有对 mongoose.c 进行编译,添加编译.c的命令:

4,没有找到 ssl 接口问题

Makefile 添加 -lssl  

5,库版本不匹配问题

 libssl.a 和 libssl.so 静态库和动态库是有的,但都是 32 位的

 所以只能编译 32 位的程序了,修改Makefile ,添加编译选项 -m32 可以编译 32 位程序。

CC = gcc -m32
CPP = $(CROSS)g++ -std=c++11 -m32

6,json 库找不到的问题

json库明明是有的,结果一看是 64 位的

 编译 32 位 json 库也很简单,修改其目录下的 Makefile,添加编译选项 -m32 即可编译出 32 位的库了。

再在 Makefile 里修改链接的库名: -ljson32。最终的 Makefile 为:

#中间文件存放目录,如.o 和 .d 文件
COMPILE_DIR = compile
BIN_DIR = bin# 可编译arm版本
#CROSS = arm-himix200-linux-
CC = gcc -m32
CPP = $(CROSS)g++ -std=c++11 -m32
CFLAGS = -Werror -gLIB =-L../json -ljson32 -lpthread -lssl -lcrypto
# SRCS = $(wildcard *.cpp)
CPP_SRCS = $(shell ls -t | grep "\.cpp$$" | head -1)
CPP_OBJS = $(patsubst %.cpp, $(COMPILE_DIR)/%.o, $(CPP_SRCS))
CPP_DEP = $(patsubst %.cpp, $(COMPILE_DIR)/%.cpp.d, $(CPP_SRCS))C_SRCS = mongoose.c
C_OBJS = $(patsubst %.c, $(COMPILE_DIR)/%.o, $(C_SRCS))
C_DEP = $(patsubst %.c, $(COMPILE_DIR)/%.c.d, $(C_SRCS))OBJS = $(CPP_OBJS) $(C_OBJS)
DEP_ALL = $(CPP_DEP) $(C_DEP)$(shell if [ ! -d $(COMPILE_DIR) ]; then mkdir $(COMPILE_DIR); fi)
$(shell if [ ! -d $(BIN_DIR) ]; then mkdir $(BIN_DIR); fi)TARGET=$(BIN_DIR)/$(BIN)all: $(TARGET)-include $(DEP_ALL)$(TARGET): $(OBJS)$(CPP) $(CFLAGS) $^ -o $@ $(LIB)$(COMPILE_DIR)/%.o: %.cpp $(COMPILE_DIR)/%.cpp.d$(CPP) $(CFLAGS) -c $< -o $@$(COMPILE_DIR)/%.cpp.d: %.cpp$(CPP) $(CFLAGS) -MM -E -c $< -o $@@sed 's/.*\.o/$(subst /,\/,$(dir $@))&/g' $@ > $@.tmp@mv $@.tmp $@$(COMPILE_DIR)/%.o: %.c $(COMPILE_DIR)/%.c.d$(CC) $(CFLAGS) -c $< -o $@$(COMPILE_DIR)/%.c.d: %.c$(CC) $(CFLAGS) -MM -E -c $< -o $@@sed 's/.*\.o/$(subst /,\/,$(dir $@))&/g' $@ > $@.tmp@mv $@.tmp $@.PHONY: clean
clean:rm -rf $(COMPILE_DIR) $(BIN_DIR)

 Makefile 主要是将 c 和 cpp 文件分开编译了。

本文标签: mongoose 搭建 http 服务