Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updated to Mono 3.12 #2

Closed
urkle opened this issue Jan 21, 2015 · 13 comments
Closed

updated to Mono 3.12 #2

urkle opened this issue Jan 21, 2015 · 13 comments
Assignees

Comments

@urkle
Copy link
Member

urkle commented Jan 21, 2015

No description provided.

@urkle urkle self-assigned this Jan 21, 2015
@PumpkinPaul
Copy link

Hi Edward - is there any news on a fix for this issue? I've just update to Mono 3.12.0 and it's broken my MonoKickstart :-( I'm getting a the following error while trying to execute my app...

Library not loaded: /usr/local/lib/libmono-2.0.1.dylib
Referenced from: /blahblahblah/MyApp.app/Contents/MacOS/./MyApp.bin.osx
Reason: no suitable image found. Did find:
./osx//libmono-2.0.1.dylib: mach-o, but wrong architecture

Kind regards,
Paul

@flibitijibibo
Copy link
Contributor

Sounds like it's just missing an architecture - file should be able to say which architectures are found for both the executable and the library. May be worth checking the SDK version that it was targeting as well, if this fails for a specific OSX version (should be 10.6).

@PumpkinPaul
Copy link

Checking the mono framework folders for 2.10.9 and 3.12.0, lipo -info libmono-2.0.dylib displays i386. Whereas it's x86_64 i386 in my kickstarts that work. However, as I've upgraded Xamarin Studio I can't use the old mono dlls / libs.

@flibitijibibo
Copy link
Contributor

That's probably it then - we build universal binaries since self-building Mono lets us do 64-bit builds as well (as long as it's not SGen), so you'll need to edit CMakeLists.txt and remove the x86_64 build.

(Also, when is Xamarin finishing that 64-bit support they said they would add?)

@PumpkinPaul
Copy link

Ah, never used MAKE. I naively thought I could just make -FCMakeList.txt :-)
Is there a way to just copy the latest (32bit) libs from the 3.12.0 framework into the Mac bundle folder and tell the kickstart to force to 32bit?

@flibitijibibo
Copy link
Contributor

lipo -extract should let you remove architectures from a universal binary.

@urkle
Copy link
Member Author

urkle commented Feb 23, 2015

@tomrijnbeek
Copy link

I am having some problems getting the 3.12 version to work on OSX. When copying the files first time, I got the error that the mscorlib.dll was out of sync, so I copied it (together with libmono.dylib) from my own Mono.framework (at version 3.12.1). It then complains about the architecture for the libmono.dylib, so I used lipo to extract the x64 architecture from the bin.osx file.

The error I then get is

dyld: Symbol not found: _kCFLocaleCountryCode
  Referenced from: {app}/Contents/MacOS/osx/libmono-2.0.1.dylib
  Expected in: flat namespace
 in {app}/Contents/MacOS/osx/libmono-2.0.1.dylib
./rochefusion: line 24:  2329 Trace/BPT trap: 5       ./${BASENAME}.bin.${ext} $@

From some Googling it appears that since Mono 3.4 you have to link the mono binary to the CoreFoundation framework. Sadly I do not understand the code well enough to make changes myself (I can't even get things to compile myself), so I figured I would let you know about this. Maybe the problem lies with me replacing the included libmono.dylib, but as mentioned, it seems to be out of sync with the mscorlib.dll distributed:

Corlib not in sync with this runtime: expected corlib version 96, found 111.
Loaded from: {app}/Contents/MacOS/mscorlib.dll
Download a newer corlib or a newer runtime at http://www.go-mono.com/daily.

@flibitijibibo
Copy link
Contributor

Worse comes to worse, use my 2.10.9 branch over here:

https://github.com/flibitijibibo/MonoKickstart

We'll probably update to 4.0.1 at some point given the .NET Core stuff going on, but that get put off depending on what surrounding projects need.

Will also have to figure out why it doesn't link the dylib properly; this comes straight from their build environment!

@tomrijnbeek
Copy link

I am afraid that our engine (we do not use MonoGame) does not support mono versions that old, but thanks for the pointer! I will be keeping an eye on this repository for a solution. Let me know if you need my help to test anything.

@flibitijibibo
Copy link
Contributor

Fair enough! If you end up giving kick.c a try with 4.0.1, let us know and we might be able to patch that into upstream (though prebuilt might still be done on Edward's CentOS box for Linux, for a nice low glibc requirement).

@PumpkinPaul
Copy link

I'm pretty sure I was able to work round this issue in the end. I think I rolled the mono version back either by hacking the project file or using a different project type and changing the default framework back to the previous version

@flibitijibibo
Copy link
Contributor

Closing this for a 4.x issue...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants