views:

95

answers:

1

I've been trying to compile some F# code with Mono 2.8 in OpenSuSe 11.3. And I keep running into trouble, I'm currently getting this error thrown at me:

parameter error FS0219: The referenced or default base CLI library 'mscorlib' is 
binary-incompatible with the referenced F# core library '/home/fredrik/Documents/
FSharp-2.0.0.0/FSharp-2.0.0.0/bin/FSharp.Core.dll'. Consider recompiling the 
library or making an explicit reference to a version of this library that matches 
the CLI version you are using.

Using these options to the fsharp compiler:

mono fsc.exe -o:FSKit.dll -g --debug:full --noframework --define:DEBUG 
--define:TRACE --optimize- --tailcalls- --platform:x86 -r:"FSharp.Core.dll" 
-r:"/usr/lib/mono/4.0/mscorlib.dll" -r:"/usr/lib/mono/4.0/System.Core.dll" 
-r:"/usr/lib/mono/4.0/System.dll" --target:library --warn:3 --warnaserror:76 
--vserrors --LCID:1033 --utf8output --fullpaths --flaterrors Src/Version.fs 
Src/Bit.fs Src/Reflection.fs Src/Perf.fs Src/Stream.fs Src/AssemblyInfo.fs

After installing FSharp from the fsharp.zip file found here and running ./install-mono.sh: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=f8c623ae-aef6-4a06-a185-05f59be47d67&displaylang=en

Do I need to compile FSharp.Core.dll with mono also?

+3  A: 

I think that the CTP version of F# is available only for .NET 2.0 based runtime (i.e. from .NET 2.0 to .NET 3.5), so there is no stand-alone installation for .NET 4.0. Since the assembly format differs a little bit, you'll probably need to use 2.0 version of Mono libraries.

I think that referencing libraries from /usr/lib/mono/2.0 should fix the problem.

And BTW, there is a project to create Linux and Mac packages for F#. Using the ZIP file and install script definitely works, but installing a package may be an easier option:

Tomas Petricek
You are correct, thanks :)
thr