(原)linux下编译microhttpd库(一个c/c++的http服务端库)

news/2024/7/7 20:39:24

下载库:

http://www.gnu.org/software/libmicrohttpd/
这里有简单的该库介绍以及使用方法(简略)。
下载:
$ svn checkout https://gnunet.org/svn/libmicrohttpd/
使用手册:
http://www.gnu.org/software/libmicrohttpd/microhttpd.pdf
使用教程:
http://www.gnu.org/software/libmicrohttpd/tutorial.pdf
(使用手册和使用教程都是讲怎么用这个库的。使用手册主要是API的调用、参数意义以及调用例子、各数据结构等,使用教程是使用手册的补充,使用教程相当与大纲,使用手册相当与细则。)

libmicrohttpd库如果要有https/SSL/TLS的支持,需要libgcrypt和libgnutls库:
http://www.gnupg.org/download/index.en.html#libgcrypt
ftp://ftp.gnu.org/gnu/gnutls/
我linux下,且要支持https。下载之。
----------------------------------------------


 

安装依赖库:

1.安装libgcrypt库:
$ ./configure
configure: error: libgpg-error is needed.
See ftp://ftp.gnupg.org/gcrypt/libgpg-error/
去ftp://ftp.gnupg.org/gcrypt/libgpg-error/下载libgpg-error, ./configure,make,sudo make install.
继续对libgcrypt进行./configure,make,sudo make install.

2.安装libgnutls库:
$ ./configure
configure: error:
***
*** Libnettle 2.4 was not found. You must compile nettle with gmp support.
去ftp://ftp.lysator.liu.se/pub/security/lsh下载nettle,./configure,make,sudo make install.
继续对libgnutls进行./configure,依然
configure: error:
***
*** Libnettle 2.4 was not found. You must compile nettle with gmp support.
查看gnutls-3.0.19/README,有这么一句话:
The library depends on libnettle and p11-kit.
去http://p11-glue.freedesktop.org/releases/下载p11-kit,./configure,make,sudo make install.
对libgnutls进行./configure,依旧。。。日!
“You must compile nettle with gmp support”?
去http://gmplib.org/下载gmp。。。然后各种曲折,最后终于成功编好了gnutls库,这部分步骤如下:

$ cd p11-kit-0.12/
$ ./configure
$ make
$ sudo make install

$ cd gmp-5.0.5/
$ ./configure

这里可能会提示:
checking for suitable m4... configure: error: No usable m4 in $PATH or /usr/5bin (see config.log for reasons).

$ m4
程序“m4”尚未安装。 您可以使用以下命令安装:
sudo apt-get install m4
$ sudo apt-get install m4
$ ./configure

$ make
$ sudo make install

$ cd nettle-2.4
$ make clean #必须!

$ ./configure
$ make
$ sudo make install
$ cd gnutls-3.0.19
$ ./configure
$ make
$ sudo make install
----------------------------------------------


 安装目标libmicrohttpd库:

例行查看README文件,重要信息如下:
If you are using Subversion, run "autoreconf -fi" to create configure.
再例行查看INSTALL文件,重要信息如下:
没有重要信息,这文件是默认创建的。估计是GNU packages的INSTALL模板。
$ cd libmicrohttpd/
$ sudo apt-get install autoconf
$ sudo apt-get install libtool
$ autoreconf -fi
$ ./configure
注意,如果之前make过,这里要make clean!再./configure,make,sudo make install之。
----------------------------------------------


 libmicrohttpd的测试用例需要的库:

libmicrohttpd源码里的测试用例会用到libcurl,zzuf和socat库,干脆把他们都装上。
去http://curl.haxx.se/download.html下载curl库,
去http://caca.zoy.org/wiki/zzuf下载zzur,
去http://www.dest-unreach.org/socat/download/下载socat。
编socat的时候,make时出了个插曲,需要sudo apt-get install yodl。
------------------------------------------------


再编 libmicrohttpd :

$ cd libmicrohttpd

$ make clean

$ autoreconf -fi

$ ./configure

configure: Configuration Summary:
Operating System: linux-gnu
libgcrypt: yes
libcurl (testing): yes
Target directory: /usr/local
Messages: yes
HTTP Authentic.: yes
Postproc: yes
HTTPS support: yes

configure: HTTPS subsystem configuration:
License : LGPL only
这些yes啊说明所有的依赖库和test case的依赖库都已安装来

sudo apt-get install texinfo #这个的make需要这个

$ make

$ sudo make install
------------------------------------------------


检验库安装正确鸟:

$ cd libmicrohttpd/doc/examples
$ vi Makefile

CC=g++
CFLAGS=-Wall
LDFLAGS+=-ldl

MyIncPath=/usr/local/include
MyLibPath=/usr/local/lib
MyLibsName=microhttpd

_I=$(addprefix -I,$(subst :, ,$(MyIncPath)))
_L=$(addprefix -L,$(subst :, ,$(MyLibPath)))
_l=$(addprefix -l,$(subst :, ,$(MyLibsName)))

all:
ifdef name
	$(CC) $(CFLAGS) -o $(addsuffix .exec,$(name)) $(addsuffix .c,$(name)) $(_I) $(_L) $(_l) $(LDFLAGS) 
else
	@echo  "usage:make name=hellobrowser"
endif

clean:
	rm -rf *.exec

$ make name=hellobrowser
$ ./hellobrowser.exec
error while loading shared libraries: libmicrohttpd.so.10: cannot open shared object file: No such file or directory
$ sudo vi /etc/ld.so.conf
添加一行:/usr/local/lib
sudo ldconfig使生效
$ ./hellobrowser.exec
打开浏览器输入http://localhost:8888出现“Hello, browser!”页面说明正确鸟~


end 4 have libmicrohttpd.

 

 

 

转载于:https://www.cnblogs.com/xiaouisme/archive/2012/05/23/2515151.html


http://www.niftyadmin.cn/n/673093.html

相关文章

9月10日金股

http://www.jrj.com  2007年09月07日 17:44 金融界网站 【字体:大 中 小】 【页面调色版 】 走 势摘 要 厦华电子(行情,资讯)(600870):随着电子行业利润持续、高速增长,特别是数字电视的不断推广,公司…

创业板前夜 比八年前更猛烈的财富冲浪

2007-9-10 8:27:00 代码:作者:朱凯栋 卢山林 李晔斌 来源: 出处: 理财周报加入收藏复制链接给好友跳到低部深交所内部人士向理财周报记者透露,目前创业板指数系统已进入研发阶段,创业板上市推广部已经往西北、华北、东北、华南等区域派驻了工作人员&…

年入10万如何理财 筑巢期组建幸福小家理财计划

[作者]纪红霞 [来源]每日商报 [选稿]summer 2007-09-10 09:53:32 理财顾问 招商银行杭州分行财富管理理财师 阮肖林 理财格言 专业、专注、诚信、创新 理财案例: 刘小姐咨询:我和准老公今年均为26岁,参加工作四年,两人…

滞涨蓝筹一鸣惊人

http://www.jrj.com  2007年09月10日 16:52 金融界网站 【字体:大 中 小】 【页面调色版 】 受外部利淡因素的影响,周一沪深股指跳空低开,上证综指最低运行到5169.91点后振荡回升,并伴随着成交量的支持一路震荡上行&#xff…

AndroidWidget实践 --- EverydayTips开发(4)

接下来就是刷新了.刷新操作的话目测有几种方式(目测 --!) 1.在widget创建线程刷新 2.使用timer刷新(其实也是线程吧?) 3.widget连接Service 在Service创建线程刷新 4.widget连接Service 在Service中使用AlarmManager刷新 Thread比较简单,修改widget代码如下 package com.su.ti…

广电信息:超跌低价本地股 业绩增长190%

http://www.jrj.com  2007年09月10日 17:10 金融界网站 【字体:大 中 小】 【页面调色版 】 周一大盘的表现正如我们上周末所谈到的一样,不排除周一大盘以阳包阴的态势展开。从周一股指止跌后展开的稳步盘升的走势来看,表明当前行情仍处…

Google和百度、雅虎的站内搜索代码

对于一个网站来说,使用搜索引擎来进行站内搜索往往比自己编写的站内搜索更高效,并且不占用网站服务器的资源,下面是我搜集到的几个主要搜索引擎(Google和百度、雅虎)的站内搜索代码,使用时只需要将代码里的…

Delphi应用程序的调试(五)其他调试工具

Delphi7中提供了一些附加调试工具来帮助用户检查程序错误。从性能上讲,其中一些工具属于高级调试工具。尽管高级调试工具不像其他工具那样常用,但对于经验丰富的编程人员来说,它们是非常有用的。 Evaluate/Modify对话框(The Evalu…