Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

An issue when running mono 2.10.2 mkbundle on Mac OS X snow leopard

This page has info about Bundles with mkbundle, but when I tried to use it on Mac, I got this error message.

delegate> mkbundle delegate.exe -o delegate
OS is: Darwin
Sources: 1 Auto-dependencies: False
   embedding: /Users/smcho/Desktop/csharp/delegate/delegate.exe
Compiling:
as -o temp.o temp.s 
temp.s:2:unknown section type: symbol_stubs
temp.s:2:Rest of line ignored. 1st junk character valued 112 (p).
[Fail]

And from this site, I could run export AS="as -arch i386" to get another error.

Compiling:
as -arch i386 -o temp.o temp.s 
cc -g -o a.out -Wall temp.c `pkg-config --cflags --libs mono-2`  temp.o
ld: warning: ignoring file /Library/Frameworks/Mono.framework/Versions/2.10.2/lib/libmono-2.0.dylib, file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: ignoring file temp.o, file was built for i386 which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
  "_mono_register_bundled_assemblies", referenced from:
      _mono_mkbundle_init in cczw6Dmo.o
  "_mono_set_dirs", referenced from:
      _main in cczw6Dmo.o
  "_mono_main", referenced from:
      _main in cczw6Dmo.o
  "_assembly_data_ser_exe", referenced from:
      _assembly_bundle_ser_exe in cczw6Dmo.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
[Fail]

I see this is a problem of 32bit/64bit compilation issue, then how to remove this error message? I tried with export CC="cc -arch i386", but it doesn't work.

like image 498
prosseek Avatar asked Jan 19 '23 10:01

prosseek


1 Answers

I had to take the following steps.

  1. export AS="as -arch i386"
  2. export CC="cc -arch i386"
  3. Run without --static option. Just run mkbuild BINARY. With the option --deps, it seems to embed more dlls. You can use -z option to zip the embedded libraries.

You may get more hints from this, and this. Mono's mkbundle is explained in this.

like image 182
prosseek Avatar answered Jan 30 '23 20:01

prosseek