Ocamlopt и отсутствующий файл crt2.o

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

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 ответа

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

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

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

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

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

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

Ура,

Джонатан

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

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

Другие вопросы по тегам