Cygwin 在对象文件上使用ocamlmklib时出现系统错误

Cygwin 在对象文件上使用ocamlmklib时出现系统错误,cygwin,ocaml,object-files,Cygwin,Ocaml,Object Files,我正在cygwin上编译一个定理证明程序,我得到了以下错误: $ make ocamlmklib -o bin/minisatinterface minisat/core/Solver.o minisat/simp/SimpSolver .o bin/Ointerface.o -lstdc++ ** Fatal error: Error while reading minisat/core/Solver.o: Sys_error("Invalid ar gument") Makefile:49:

我正在cygwin上编译一个定理证明程序,我得到了以下错误:

$ make
ocamlmklib -o bin/minisatinterface minisat/core/Solver.o minisat/simp/SimpSolver
.o bin/Ointerface.o -lstdc++
** Fatal error: Error while reading minisat/core/Solver.o: Sys_error("Invalid ar
gument")
Makefile:49: recipe for target `bin/libminisatinterface.a' failed
make: *** [bin/libminisatinterface.a] Error 2
不清楚这里是什么样的无效参数

我为ocamlmklib找到的代码对理解错误消息没有帮助。它不能读取文件本身,或者内容有问题吗
ls
确实列出了文件:

$ ls -l minisat/core/Solver.o
-rw-r--r-- 1 gbuday mkpasswd 2096 jan.  22 10.42 minisat/core/Solver.o
更新:如果我删除Solver.o,我会收到不同的错误消息:

** Fatal error: Cannot find file "minisat/core/Solver.o"

因此,上面的错误消息是关于对象文件的内容。

我碰巧知道这与ATP Satallax的构建有关,它可以与Isabelle Sledgehammer一起使用,我被要求查看这一点

我对make文件和ocaml没有专业知识。我在构建Satallax v2.7方面的成功完全来自于遵循安装中的说明,在猜测错误代码的含义方面有一些最小的能力,这是我在一年前构建Satallax v2.6时主要需要的

要做的第一件重要事情是确保在Cygwin终端中工作时解压缩tar文件,而不是在Windows下使用WinZip之类的东西

假设你在Cygwin终端工作,这些是我做的笔记。在那之后,我将包括来自Satallax安装的文本和一些注释

Sources: http://www.ps.uni-saarland.de/~cebrown/satallax/

0) tar xvzf satallax-2.7.tar.gz

1) Cygwin Package (these are also for other's like Leo-II): 
     zlib-devel, make, OCaml devel, gcc devel, g++ devel, libstdc++6-devel
   Ubuntu 12 Packages:
     sudo apt-get install build-essential
   zlibg-dev using the Ubuntu Software Center
   ocaml and g++ if they don't come with "build-essential"

2) Put eprover.exe in the path so that ./configure can find it.
   a) There are the following lines in the configure files, which shows
      that it's configured to find picomus, eprover has to be in the path
      or `which eprover` has to be edited.
        # Optionally set picomus to your picomus executable
        picomus=${PWD}/picosat-936/picomus
        # Optionally set eprover to your E theorem prover executable
        eprover=`which eprover`

3) Follow the instructions in INSTALL.
   a) export MROOT=`pwd` takes care of this next note, which I had to do
      for v2.6, info I keep in here in case I need it in the future.
   b) export MROOT=<minisat-dir>, where you replace "minisat-dir" with the 
      /cygdrive/e\E_2\binp\isaprove\satallax-2.6\cygwin\minisat

3) OLD v2.6 NOTE: If you get an error, delete the old source and try 
   untaring the sources again.
然后,安装文件给出简短说明:

* Short Instructions

cd minisat
export MROOT=`pwd`
cd core
make Solver.o
cd ../simp
make SimpSolver.o
cd ../../picosat-936
./configure
make
cd ..
./configure
make
./test | grep ERROR
下载所有需要的软件包,并将
eprover.exe
放入路径后,除了测试之外,它为我构建时没有任何错误,但可执行文件在Isabelle Sledgehammer使用时可以工作

INSTALL
步骤3
谈到了提供
picomus
可执行文件的位置,但我很确定不需要这样做,因为
picosat-936\picomus.exe
是在这个版本中生成的

如果您观看构建消息,它会告诉您它在寻找什么以及找到了什么

为完整起见,除了与
Coq
相关的说明外,我还包括了
INSTALL
中的文本

There are a number of requirements in order to compile Satallax.
In short, you need make, ocaml, g++ and the zlib header files.
In Debian and derived Linux systems, you can get these from
the build-essential and zlib1g-dev packages. You need
ocamlopt to obtain a standalone executable.

If you're not the administrator of the computer on which you're installing,
you can quote the previous paragraph to the administrator.

* Short Instructions

cd minisat
export MROOT=`pwd`
cd core
make Solver.o
cd ../simp
make SimpSolver.o
cd ../../picosat-936
./configure
make
cd ..
./configure
make
./test | grep ERROR

./bin/satallax.opt is the native code executable to use.
See test for examples of how to use it.

* Long Instructions

STEP 1:

Compile minisat (see minisat/README)

cd minisat
export MROOT=<minisat-dir>              (or setenv in cshell)
cd core
make Solver.o
cd ../simp
make SimpSolver.o
cd ../..

STEP 2 (Optional.  Only needed to extract proof information for proof terms.) :

Build picosat (including picomus):

cd picosat-936
./configure
make
cd ..

STEP 3:

If desired, edit the configure script to give the location of your picomus
and eprover executables. (If the executables are not found by the configure script,
you will need to give the location of the executables to satallax via the command line
options -P <picomus> -E <eprover> if they are needed.)
Run the configure script for Satallax.

./configure

STEP 4:

make

uses ocamlopt to make a standalone executable

./bin/satallax.opt

and uses ocamlc to make a bytecode executable

./bin/satallax

that depends on ocamlrun

STEP 5:

Test satallax using the examples in the script file:

./test

As long as you don't see a line with the word ERROR, it should be working.
编译Satallax有许多要求。
简而言之,您需要make、ocaml、g++和zlib头文件。
在Debian和派生的Linux系统中,您可以从
build essential和zlib1g开发包。你需要
ocamlopt获取一个独立的可执行文件。
如果您不是要安装的计算机的管理员,
您可以向管理员引用上一段。
*简短说明
cd迷你卫星
导出MROOT=`pwd`
cd磁芯
制作解算器
cd../simp
制作辛普森一家
cd.././picosat-936
/配置
制作
光盘
/配置
制作
/测试| grep错误
./bin/satallax.opt是要使用的本机可执行代码。
有关如何使用它的示例,请参见测试。
*长指令
步骤1:
编译miniat(参见miniat/README)
cd迷你卫星
export MROOT=(或cshell中的setenv)
cd磁芯
制作解算器
cd../simp
制作辛普森一家
cd../。。
步骤2(可选。仅需要提取证明条款的证明信息):
构建picosat(包括picomus):
cd picosat-936
/配置
制作
光盘
步骤3:
如果需要,编辑配置脚本以提供picomus的位置
和可执行文件之上的EPR。(如果配置脚本找不到可执行文件,
您需要通过命令行将可执行文件的位置提供给satallax
选项-P-E(如果需要)
运行Satallax的配置脚本。
/配置
步骤4:
制作
使用ocamlopt生成独立的可执行文件
./bin/satallax.opt
并使用ocamlc使字节码可执行
/bin/satallax
这取决于奥坎兰
步骤5:
使用脚本文件中的示例测试satallax:
/测试
只要你没有看到一行字错误,它应该是工作的。

所有文件都存在吗?使用
-verbose
标志和
-ccopt-v
运行
ocamlmklib
,查看ocaml和c执行的所有命令compilers@ygrek:您的意思是使用
ocamlmklib-verbose-ccopt-v-o bin/ministatinterface
等吗。?它表示+ FLULKIN链CygWin合并清单堆栈16777216 -O bin /dLLMIN IATIATF。A.MIISAT/Cyp/Simulver。O MIISAT/SIMP/SIMPSOLVER。O bin /Outo界面。O -LSTD C++ ++致命错误:读取MIISAT/内核/求解器时出错:O:SysSeLead(“无效参数”)
There are a number of requirements in order to compile Satallax.
In short, you need make, ocaml, g++ and the zlib header files.
In Debian and derived Linux systems, you can get these from
the build-essential and zlib1g-dev packages. You need
ocamlopt to obtain a standalone executable.

If you're not the administrator of the computer on which you're installing,
you can quote the previous paragraph to the administrator.

* Short Instructions

cd minisat
export MROOT=`pwd`
cd core
make Solver.o
cd ../simp
make SimpSolver.o
cd ../../picosat-936
./configure
make
cd ..
./configure
make
./test | grep ERROR

./bin/satallax.opt is the native code executable to use.
See test for examples of how to use it.

* Long Instructions

STEP 1:

Compile minisat (see minisat/README)

cd minisat
export MROOT=<minisat-dir>              (or setenv in cshell)
cd core
make Solver.o
cd ../simp
make SimpSolver.o
cd ../..

STEP 2 (Optional.  Only needed to extract proof information for proof terms.) :

Build picosat (including picomus):

cd picosat-936
./configure
make
cd ..

STEP 3:

If desired, edit the configure script to give the location of your picomus
and eprover executables. (If the executables are not found by the configure script,
you will need to give the location of the executables to satallax via the command line
options -P <picomus> -E <eprover> if they are needed.)
Run the configure script for Satallax.

./configure

STEP 4:

make

uses ocamlopt to make a standalone executable

./bin/satallax.opt

and uses ocamlc to make a bytecode executable

./bin/satallax

that depends on ocamlrun

STEP 5:

Test satallax using the examples in the script file:

./test

As long as you don't see a line with the word ERROR, it should be working.