2012-03-09 12 views
4

は、Windows 7上のOCamlで、64ビット(自己インストーラ)をインストールしたので、私はネイティブコードコンパイラを使用Ocamloptと行方不明crt2.oがファイル

ocamlopt HelloWorld.ml -o HelloWorld 

たシンプルなEXEファイルを作成しようとしました(ocamlopt)とVisual C++(Visual Studio 10がインストールされている)とMicrosoft Assembler MASM version 8(MinGWもインストールされています)。 OCaml(c:\ ProgramFiles \ Ocaml \ bin)、MinGW(c:\ ProgramFiles \ MinGW \ bin)およびMASM(C:\ masm32 \ bin)のパス変数も設定しました。しかし、私の最善の努力と多くの検索にもかかわらず、私はcrt2.oがファイルが置かれているのMinGWのlibフォルダにHelloWorld.mlファイルを配置する場合を除き、エラーメッセージ

**Fatal error, Cannot find file "crt2.o" 
File "caml_startup", line 1, characters 0-1: 
Error: error during linking. 

周りを取得することはできません。私は答えが簡単かもしれないことを感謝しますが、私は立ち往生しています。どんな助けでも大歓迎です。

+1

は、私はすべてが彼らの適切渡さ取得するFlexLinkのためのグローバルフラグ( 'FLEXLINKFLAGS')を設定する必要が思い出します。 '-cclib --verbose -ccopt -v'のようにできるだけ冗長レベルを設定して、実行されている外部コマンドを確認してください。非常に役立ちます。 – nlucaroni

答えて

2

私は、ライブラリファイルを見つけるために何らかの方法が必要だと思います。ソースパスからlibにコンパイルされたときにバイナリでハードコードされていれば、何らかの方法で検索します(環境変数)。正しい環境を提供する可能性が高いmingw(またはmsys)シェルからビルドするか、LIB env変数を手動で設定してください。ところで、mingwの問題をデバッグするときは、最初にocamlを除外し、単純なCプログラムを最初に構築する方が簡単になります。

+0

私はMinGWシェルを使ってみましたが、あなたが示唆したように、標準的なコマンドを使ってそのように構築できました。ここで提案されている他のすべてのオプションを調べて、Windowsシェルを介して動作させることができるかどうかを確認します。どうもありがとう – user1060986

2

私はそれが既知のバグであることを覚えています。マニュアルに記載されていることとは対照的に、Cygwinもインストールする必要があります。

もう1つの問題は32/64ビットの非互換性です。つまり、ツールの中には32ビットのターゲットを使用しているものや、64ビットのターゲットを使用するものがあります。

1

どのOCamlインストーラを使用した方が正確でしょうか(URL?) this pageにあるインストーラを試しましたか?いくつかの潜在的な問題と、MinGW/MSYSをネイティブコンパイル用に設定する方法を示します。

あなたが持っている問題と最終的に見つけた解決策を明確に理解することは、保守担当者に関連文書の更新方法を伝えることができます。

1

私はインストーラを書きました。

ocamloptはflexlink(インストーラがパッケージ化している)を使用しているため、詳しい説明はhttp://protz.github.com/ocaml-installer/です。本当に正しいFLEXLINKFLAGSを環境変数としてエクスポートする必要があります。しかし、フレックスリンク自体は、msys環境では動作しません。

インストーラの次のバージョンでは、すべてが完璧に動作するはずのcygwinを使用することをお勧めします。

乾杯、

ジョナサン

関連する問題