2

Netclient ライブラリの Https_client モジュールを使用する Facebook.ml というファイルがあります。ファイルを Facebook.cmo にコンパイルしました。トップレベルおよびコンパイルした他のコードで問題なくすべての関数を使用できます。

ただし、ocsigenserver は Netclient ライブラリ内で Https_client モジュールを見つけることができず、ocsigen ビルドをテストするとmake test.byteエラーが表示されます。

 ocsigenserver  -c local/etc/UC/UC-test.conf
 ocsigenserver: main: Fatal - While loading /home/.../Facebook.cmo: error while linking /home/.../Facebook.cmo.
 ocsigenserver: main: Reference to undefined global `Https_client'
 make: *** [test.byte] Error 52

.conf.in ファイルに次の行を追加しました。

 <library module="/home/.../Facebook.cmo" />

私は Facebook.ml をコンパイルしています

 ocamlfind ocamlc -thread -package core,equeue-ssl,netclient,lwt -linkpkg Facebook.ml

私は間違って何をしていますか?


Drup のアドバイスに従って、Makefile.options ファイルを次のように更新しました。

 PROJECT_NAME := UC

 # Source files for the server
 SERVER_FILES := UC.ml Facebook.cmo
 # Source files for the client
 CLIENT_FILES := $(wildcard *.eliomi *.eliom)

 # OCamlfind packages for the server
 SERVER_PACKAGES := home/alpha/.opam/4.01.0/lib/netclient/netclient.cma
 # OCamlfind packages for the client
 CLIENT_PACKAGES :=

エラーを受け取る:

 Fatal error: exception Fl_package_base.No_such_package("home/alpha/.opam/4.01.0/lib/netclient/netclient.cma", "")
 make: *** [_server/Facebook.cmo] Error 2

しかし、指定されたファイルパスにファイルが存在することはわかっています。他の場所にパスを追加する必要がありますか?

4

2 に答える 2

3

さまざまなソリューションがあります。

  • eliom-distillery makefile を使用しているようです。その場合は、自分で .conf を変更しないでくださいMakefile.options。代わりに変更してください。にファイルを追加しSERVER_FILES、必要なライブラリを に追加しますSERVER_PACKAGES。また、ファイルを単独でコンパイルします。
  • 自分でコンパイルを続けますが、 -linkall を追加します
  • PatJ が言っ<extension findlib-package="netclient"/>たように、ocsigenserver がライブラリをロードするように追加しnetclientます。

最初のものを強くお勧めします。

また、http クライアントが必要な場合は、ocsigenserver 内に 1 つ存在しますが、おそらくcohttpを使用する必要があります(特に、ocsigenserver 自体がすぐに使用することを考えると)。

于 2015-02-22T01:14:14.963 に答える