[Mono-dev] Mono support on Fedora, Ubuntu, Solaris, etc.

Paul paul at all-the-johnsons.co.uk
Tue Sep 16 08:13:33 EDT 2008


Hi,

> > > So what happens if I install 32-bit and 64-bit mono on a 64-bit box, I
> > > get 2 of every .dll?
> > 
> > No. When you update via yum, the correct package is installed for your
> > architecture. If you then decide to use a non-Fedora RPM, then that's
> > when things go potty and you get 2 of every dll.
> 
> I think you're missing something.  openSUSE 64-bit has a `linux32`
> program to launch a new program as a 32-bit app instead of as a 64-bit
> app.  This is useful for things like configure scripts or when you want
> to build a 32-bit-targeted binary on a 64-bit platform.

Fair enough for SuSE. 

Different distos do things differently. I think the point here is not so
much where the binaries/libs go, but more the configure scripts. If they
didn't have hardwired lines like $(prefix)/lib but used $(libdir) then
really any distributor could build correctly for any platform as the
libs would always end up in the distros correct place.

> Similarly, openSUSE has a mono-core-32bit package which provides mono32,
> which runs Mono as a 32-bit program instead of as a 64-bit program.
> This is particularly useful if you need to P/Invoke to 32-bit only
> shared libraries...

If it's a win32 dll, the advice is to put it in /usr/lib/somewhere.
Under fedora, if I want to run monodevelop (say) then the monodevelop
script in /usr/bin points to %{_libdir}/monodevelop/monodevelop.exe
rather than $(prefix)/lib - this would go against the packaging
guidelines.

> Consequently, it should be quite possible to have *two* mono's
> installed, one 32-bit and one 64-bit, and use e.g. linux32 or mono32 to
> control which one is executed.

We have that already. Before it (literally) exploded, by 64 bit box used
the 32 bit version of Firefox - mainly as I needed to use flash and
gnash wasn't cutting it.

> Yum architecture shouldn't matter, as you have both installed, and
> "non-Fedora RPMs" shouldn't matter, as they're both from Fedora.

What I meant was (say) someone installed the Fedora (rawhide) Mono.
Currently this is at 2.0RC1 on a 64 bit box. If they then went and
installed a mandriva RPM (or SuSE RPM) which needed GAC. There is no
g/tee that the mandriva RPM installed to /usr/lib64 or if it installed
to /usr/lib that GAC would be found.

> So what happens there?  Do you get two copies of every core assembly, or
> just one?

You get a mess unless you're careful!

> For example, openSUSE's mono-core-32bit packages only
> provides /usr/bin/mono32, libMonoPosixHelper.so, libikvm-native.sl, and
> libmono.so{,.0,.0.0.0} all compiled for 32-bit processors.  There are no
> duplicate assemblies.

But on a 64 bit box, they're not correctly optimised on compilation
which can result in a slow down.

TTFN

Paul
-- 
Sie können mich aufreizen und wirklich heiß machen!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20080916/1213dbb0/attachment.bin 


More information about the Mono-devel-list mailing list