0

我正在尝试使用 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.am,删除示例代码的名称并添加hellobrowser(我认为这可以完成)。之后,我尝试在我的项目顶部运行 automake,以便它从 cygwin 终端或 netBeans 终端更新 makefile.in,但我收到以下错误:

/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 个级别的 makefile,./、./src 和 ./src/examples,但我只考虑位于 ./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 
4

1 回答 1

0

如错误消息所示,@INC不包含/cygdrive/c/develop/MinGW/share/automake-1.11/automake,这是您的Struct.pm谎言。

它确实包含/mingw/share/automake-1.11,这是一个完全不同的文件夹。可能有解决此问题的 automake 方法,但我对此并不熟悉。如果您所有的工具都是基于 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/
于 2013-03-04T13:07:36.890 回答