我试图使用microhttpd库,以便从c++代码生成html站点。我在windows上使用netbeans并使用cygwin编译。我已经从ftp://ftp.gnu.org/gnu/libmicrohttpd/下载了microhttpd的最新版本,并且已经能够运行示例。
我的问题是当我试图构建自己创建的代码(例如hellobrowser,遵循本教程:http://www.gnu.org/software/libmicrohttpd/tutorial.html#Hello-browser-example)。
我尝试重新使用makefile。我,删除示例代码的名称和添加hellobrowser(我认为这是做得很好)。之后,我尝试在项目的顶部运行automake,以便它更新makefile。从cygwin终端或netBeans终端,但我得到以下错误:
/cygdrive/c/users/toni/NB/hellobrowser$ automake
Can't locate Automake/Struct.pm in @INC (@INC contains: /mingw/share/automake-1.11 /usr/lib/perl5/5.10/i686-cygwin /usr/lib/perl5/5.10 /usr/lib/perl5/site_perl/5.10/i686-cygwin /usr/lib/perl5/site_perl/5.10 /usr/lib/perl5/vendor_perl/5.10/i686-cygwin /usr/lib/perl5/vendor_perl/5.10 /usr/lib/perl5/vendor_perl/5.10 /usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/vendor_perl/5.8 .) at /cygdrive/c/Develop/MinGW/bin/automake-1.11 line 47.
BEGIN failed--compilation aborted at /cygdrive/c/Develop/MinGW/bin/automake-1.11 line 47.
但是当查看内部的automake文件夹时,我可以找到Struct.pm:
/cygdrive/c/develop/MinGW/share/automake-1.11/automake$ ls
ChannelDefs.pm Configure_ac.pm Item.pm Rule.pm Variable.pm
Channels.pm DisjConditions.pm ItemDef.pm RuleDef.pm Version.pm
Condition.pm FileUtils.pm Location.pm Struct.pm Wrap.pm
Config.pm General.pm Options.pm VarDef.pm XFile.pm
如果automake工作,我将运行configure(在示例中工作正常),并使用生成的makefileS构建项目。
如果有人能指出我做错了什么,我将非常感激。非常感谢!注意:我在项目的3个级别,./,./src和./src/examples中有makefiles,但我只考虑位于。/src/examples的那些,因为代码在该路径内。
Makefile.am:
SUBDIRS = .
if USE_PRIVATE_PLIBC_H
PLIBC_INCLUDE = -I$(top_srcdir)/src/include/plibc
endif
AM_CPPFLAGS =
$(PLIBC_INCLUDE)
-I$(top_srcdir)/src/include
@LIBGCRYPT_CFLAGS@
if USE_COVERAGE
AM_CFLAGS = --coverage
endif
# example programs
noinst_PROGRAMS =
hellobrowser
hellobrowser_SOURCES =
hellobrowser.c
hellobrowser_LDADD =
$(top_builddir)/src/daemon/libmicrohttpd.la
如错误信息所示,@INC
不包含/cygdrive/c/develop/MinGW/share/automake-1.11/automake
,这是您的Struct.pm
所在的位置。
它包含/mingw/share/automake-1.11
,这是一个完全不同的文件夹。可能有一个自动的方法来解决这个问题,但我不熟悉。如果你所有的工具都是基于cygwin的(在这种情况下,你到底为什么要安装MinGW ?),那么你可以让/mingw/share/automake-1.11
成为一个指向适当文件夹的符号链接。
$ mkdir -p /mingw/share/
$ ln -s /cygdrive/c/develop/MinGW/share/automake-1.11/automake /mingw/share/automake-1.11
…为了确认(就cygwin程序而言)这是有效的:
$ ls /mingw/share/automake-1.11/