Ocamlopt и отсутствующий файл crt2.o - PullRequest
4 голосов
/ 09 марта 2012

Установив OCaml на Windows 7, 64-битная (самоинсталлятор), я попытался создать простой exe-файл с

ocamlopt HelloWorld.ml -o HelloWorld

При необходимости я использовал компилятор собственного кода (ocamlopt) с Visual C ++ (у меня установлена ​​Visual Studio 10) и Microsoft Assembler MASM версии 8 (также установлен MinGW); Я также установил переменные пути для OCaml (c: \ ProgramFiles \ Ocaml \ bin), MinGW (c: \ ProgramFiles \ MinGW \ bin) и MASM (C: \ masm32 \ bin). Однако, несмотря на все мои усилия и большой поиск, я не могу обойти сообщение об ошибке

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

за исключением случаев, когда я помещаю файл HelloWorld.ml в папку lib MinGW, где находится файл crt2.o. Я ценю, что ответ может быть простым, но я застрял. Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

2 голосов
/ 09 марта 2012

Помню, это известная ошибка: вопреки тому, что сказано в документации, вам также нужно установить Cygwin.

Другая проблема может заключаться в несовместимости 32/64 бита, т. Е. Некоторые из ваших инструментов используют 32-битные цели, а другие используют 64-битные цели.

2 голосов
/ 09 марта 2012

Я полагаю, что mingw нужен какой-то способ найти библиотечные файлы - когда он компилируется из исходного кода - путь к lib жестко закодирован в двоичных файлах, если нет - он будет искать каким-то образом (переменные среды). Попробуйте создать оболочку mingw (или msys), которая может обеспечить правильную среду, или установить переменную LIB env вручную. Кстати, при отладке проблем mingw будет проще сначала исключить ocaml и сначала попытаться собрать простую программу на Си.

1 голос
/ 04 апреля 2012

Я написал установщик.

Так что просто для решения вопроса подробные инструкции можно найти по адресу http://protz.github.com/ocaml-installer/, и вам действительно нужно экспортировать правильные FLEXLINKFLAGS в качестве переменной среды, потому что ocamlopt использует flexlink (который упаковывает установщик). Однако сама по себе flexlink не работает "из коробки" в среде msys.

Следующая версия установщика побудит вас использовать cygwin, где все должно работать без сбоев.

Приветствия

1011 * Ионафан *

1 голос
/ 10 марта 2012

Не могли бы вы более точно указать, какой установщик OCaml вы использовали (URL?). Вы пробовали установить установщик на этой странице ? В нем перечислены некоторые потенциальные проблемы и способы настройки MinGW / MSYS для собственной компиляции.

Очень важно, чтобы мы четко понимали вашу проблему и, в конечном итоге, найденное вами решение, чтобы мы могли сообщить сопровождающим, как обновить соответствующую документацию.

...