我试图在Windows上设置一个框来编译我的项目。这是windows 7 32bit,通过cygwin安装程序安装了mingw,gcc和其他库。 flexdll和OCaml通过编译的软件包安装在各自的网站上。在Windows上编译一个OCaml程序w/ocamlbuild
问题是flexlink
命令发生的Access Denied
错误。我自己重复了前两个命令,其结果与ocamlbuild相同,但它所报告的错误消息可以轻松地由我执行。
有问题的所有应用程序拥有相似的权限,由Developer拥有。任何人有任何见解?谢谢。
编辑一些进一步的细节。字节码编译在这里工作正常。查看flexdll源代码,以及它如何运行该命令。它通过两种方式完成,通过Sys.command。当bash标志被设置时,命令被写入文件并运行,如bash somefile
。这工作正常。直接调用该命令失败,出现Access Denied
。我修改了下面的故事来反映这一点。
[email protected] ~/sample_ocaml
$ ocamlbuild -clean
rm -Rf _build
[email protected] ~/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
[email protected] ~/sample_ocaml
$ as -o "C:\cygwin\tmp\camlstartupe069c2.o" "C:\cygwin\tmp\camlstartup48b824.s"
[email protected] ~/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
[email protected] ~/sample_ocaml
$ gcc -mno-cygwin -print-libgcc-file-name
/usr/lib/gcc/i686-pc-mingw32/3.4.4/libgcc.a
[email protected] ~/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
的FlexLink的命令启动代码是越野车和不一致的我最后一次看,有人应该修复它:) – ygrek