2011-10-12 4 views
0

윈도우에서 프로젝트를 컴파일하기 위해 상자를 설정하려고합니다. 이것은 mingw, gcc 및 기타 라이브러리가 cygwin 설치 응용 프로그램을 통해 설치된 Windows 7 32 비트입니다. flexdll과 OCaml은 각각의 웹 사이트에 컴파일 된 패키지를 통해 설치되었습니다.w/ocamlbuild w/ocamlbuild에서 OCaml 프로그램 컴파일하기

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 
+0

FLEXLINK의 명령 실행 코드가 버그가 나는 보았다 일관성이 마지막이었다 : 나는 어쩌면이 관련되어, 다시 WINXP에 실제 실행에 Cygwin에서 심볼릭 링크를 교체 기억

누군가 수정해야한다 :) – ygrek

답변

3
+1

'gcc.exe' 심볼릭 링크를'gcc-xx.exe' 바이너리로 바꾼 것을 확인하십시오. –

+0

네, 그렇습니다. 고맙습니다. 지금 crt2.o에 문제가 있습니다. – nlucaroni

+0

@nlucaroni :'set FLEXLINKFLAGS = -nocygpath -subsystem windows -LC : \ cygwin \ usr \ i686-pc-mingw32 \ sys-root \ mingw \ lib -LC : \ cygwin \ lib \ gcc \ i686-pc-mingw32 \ 3.4.4' 또는 '-I'스위치로이 경로를 추가해도 작동합니다. –