0

C++ コードから HTML サイトを生成するために、microhttpd ライブラリを使用しようとしています。Windows で netbeans を使用し、cygwin でコンパイルしています。microhttpd の最新バージョンをftp://ftp.gnu.org/gnu/libmicrohttpd/からダウンロードし、サンプルを実行できました。

私の問題は、自分で作成したコードをビルドしようとするときです (たとえば、このチュートリアルに従って hellobrowser: http://www.gnu.org/software/libmicrohttpd/tutorial.html#Hello-browser-example )。
サンプル コードの名前を削除し、hellobrowser を追加して、makefile.am を再利用しようとしています (これで問題ないと思います)。その後、cygwin 端末または netBeans 端末のいずれかから makefile.in を更新するために、プロジェクトの先頭で automake を実行しようとしましたが、次のエラーが発生しました。

/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 に makefile がありますが、コードはそのパス内にあるため、./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/automakeStruct.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 に答える