编译libmicrohttpd程序时出错.(MHD_resmem_PERSISTENT)

Error on compiling a libmicrohttpd program. (MHD_RESPMEM_PERSISTENT)

本文关键字:resmem PERSISTENT MHD libmicrohttpd 程序 出错 编译      更新时间:2023-10-16

我已经在互联网上查找了这个问题,似乎不是一个经常出现的错误。

当我试图用g++编译(我在Ubuntu 12.04发行版上工作)时,问题就来了,g++是包括lib的主文件,它在上获得了除MHD_RESPMEM_PERSISTENT变量之外的所有变量和函数

response = MHD_create_response_from_buffer(strlen(page), (void*)page, MHD_RESPMEM_PERSISTENT);

我已经检查了链接器和要使用-lmicrohttpd编译的所有内容。我的Makefile看起来像这样:

CC = g++ -std=c++11
INCLUDE = -I. -I/opt/local/include 
CFLAGS = -g -Wall $(INCLUDE)
#CFLAGS = -g -Wall $(INCLUDE) -coverage
LDFLAGS = -L/opt/local/lib -lmicrohttpd 
all: $(TARGET)
$(OBJECTS): %.o: %.cc
$(CC) $(CFLAGS) -c $< -o $@
$(TARGET): $(OBJECTS)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJECTS) $(LDFLAGS)

我没有把链接器附加到$Objects上,但没关系。事实上,这是一个非常奇怪的问题,因为当我在其他电脑上安装软件包(libmicrohttpd-dev和libmicrohttpd dbg)时,一切都很顺利,但在某些情况下会出现这个问题。我唯一的解决方案是重新安装操作系统,然后重新开始,因为一切都不完美。

它以前在同一台计算机上运行,使用相同的操作系统,但由于我必须格式化它,我不知道如何纠正这个问题。

有什么想法吗?。

MHD_RESPMEM_PERSISTENT已添加到libmicrohttpd 0.9.x中,因此版本0.4.6-1太旧。

对于Ubuntu,我不知道你该如何升级,但由于libmicrohttpd的依赖性很低,也许只需添加另一个Ubuntu repo,或者下载.deb并手动安装它
或者apt-get删除已安装的,并从gnu.org 手动安装最新版本