Компиляция программы OCaml в Windows без ocamlbuild - PullRequest
0 голосов
/ 13 октября 2011

Я пытаюсь настроить окно для компиляции моего проекта в Windows.Это windows 7 32bit, с mingw, gcc и другими библиотеками, установленными через приложение установки cygwin.flexdll и OCaml были установлены через скомпилированные пакеты на соответствующих веб-сайтах.

Проблема заключается в ошибке Access Denied, возникающей из команды flexlink.Я повторил предыдущие две команды сам, с теми же результатами, что и ocamlbuild, и все же сообщение об ошибке, о котором он сообщает, может быть легко выполнено мной.

Все рассматриваемые приложения имеют схожие разрешения, принадлежащие разработчику.У кого-нибудь есть понимание?Спасибо.

РЕДАКТИРОВАТЬ Некоторые дополнительные сведения.Компиляция байт-кода работает отлично здесь.Просматривать исходный код flexdll и как он запускает эту команду.Это делается двумя способами, как через Sys.command.Когда установлен флаг bash, команда записывается в файл и запускается как bash somefile.Это отлично работает.Непосредственный вызов команды завершается с Access Denied.Я изменил историю ниже, чтобы отразить это.

Developer@warhol ~/sample_ocaml
$ ocamlbuild -clean
rm -Rf _build

Developer@warhol ~/sample_ocaml
$ ocamlbuild -classic-display -cflags -verbose -lflags -verbose test.native
mkdir _build
ocamldep -modules test.ml > test.ml.depends
ocamlc -c -verbose -o test.cmo test.ml
ocamlopt -c -verbose -o test.cmx test.ml
+ as -o "test.o" "C:\cygwin\tmp\camlasm07d3fe.s"
ocamlopt -verbose test.cmx -o test.native
+ as -o "C:\cygwin\tmp\camlstartupe069c2.o" "C:\cygwin\tmp\camlstartup48b824.s"
+ flexlink -chain mingw -exe -o "test.native"   "-LC:\ocamlmgw\lib" "C:\cygwin\tmp\camlstartupe069c2.o" "C:\ocamlmgw\lib
\std_exit.o" "test.o" "C:\ocamlmgw\lib\stdlib.a" "C:\ocamlmgw\lib\libasmrun.a" -lws2_32
Access is denied.
** Fatal error: Cannot run gcc -mno-cygwin -print-libgcc-file-name
File "caml_startup", line 1, characters 0-1:
Error: Error during linking
Exit code 2 while executing this command:
  ocamlopt -verbose test.cmx -o test.native

Developer@warhol ~/sample_ocaml
$ as -o "C:\cygwin\tmp\camlstartupe069c2.o" "C:\cygwin\tmp\camlstartup48b824.s"

Developer@warhol ~/sample_ocaml
$ flexlink -chain mingw -exe -o "test.native" "-LC:\ocamlmgw\lib" "C:\cygwin\tmp\camlstartupe069c2.o" "C:\ocamlmgw\lib\
std_exit.o" "test.o" "C:\ocamlmgw\lib\stdlib.a" "C:\ocamlmgw\lib\libasmrun.a" -lws2_32
Access is denied.
** Fatal error: Cannot run gcc -mno-cygwin -print-libgcc-file-name

Developer@warhol ~/sample_ocaml
$ gcc -mno-cygwin -print-libgcc-file-name
/usr/lib/gcc/i686-pc-mingw32/3.4.4/libgcc.a

Developer@warhol ~/sample_ocaml
$ ocaml
        Objective Caml version 3.11.0

# Sys.command "bash /tmp/long_file.sh";;
/usr/lib/gcc/i686-pc-mingw32/3.4.4/libgcc.a
- : int = 0
# Sys.command "gcc -mno-cygwin -print-libgcc-file-name";;
Access is denied.
- : int = 1

1 Ответ

3 голосов
/ 13 октября 2011

Похоже, проблема Cygwin + Windows для меня.

Я помню замену символических ссылок cygwin реальными исполняемыми файлами обратно на winxp, так что, возможно, это связано:

...