[Mono-list] Compile Mono on Windows 64 bit

Frank Fuchs fk.fuchs at googlemail.com
Sun Jan 26 18:20:14 UTC 2014


Dear all,

I'm still struggling to build mono 3.2.x on windows using mingw-w64. Finally
I desire a working libmono for embedding. I would prefer sgen GC since I was
experiencing "too many root sets" and "too many heap sections" errors in the
past with mono 2.10.x. 

Now trying to build mono I tried different ways:

*1. configure + build*
The standard way? 
 > configure --prefix=/C/Coding/mono-3.2.6
--with-crosspkgdir=x86_64-w64-mingw32 --target=x86_64-w64-mingw32
--host=x86_64-w64-mingw32 --enable-parallel-mark --program-transform-name=""
--with-tls=none --disable-mcs-build --enable-nls=no --disable-embed-check
--enable-win32-dllmain=yes --with-libgc-threads=win32 --with-profile4=yes
configure works well. But make fails in mono-3.2.6/libgc/mallocx.c with: 
 > mallocx.c:34:1: error: initializer element is not constant
 > ptr_t * GC_CONST GC_objfreelist_ptr = GC_objfreelist;
and errors alike. 

*2. configure --with-gc=none --with-sgen=yes *
So I added --with-gc=none --with-sgen=yes to the above configure line. Now
make skips libgc (as expected), and run make. 
There are some smaller(?) issues i could temporarily fix as follows:
a > null-gc.c:25:4: error: 'MonoThreadInfoCallbacks' has no member named
'mono_gc_pthread_create'
solved by adding #ifndef HOST_WIN32 arround this line. win32 threads don't
seem to be handled in null-gc.c

b > CCLD   pedump.exe
  > ./.libs/libmonoruntime.a(libmonoruntime_la-threadpool.o): In function
`check_for_interruption_critical':
  > c:\Coding\Builds64\mono-3.2.6\mono\metadata/threadpool.c:1424: undefined
reference to `mono_gc_set_skip_thread'
  > ./.libs/libmonoruntime.a(libmonoruntime_la-threadpool.o): In function
`tp_poll_wait':
  >
c:\Coding\Builds64\mono-3.2.6\mono\metadata/../../mono/metadata/tpool-poll.c:179:
undefined reference to `mono_gc_set_skip_thread'
  >
c:\Coding\Builds64\mono-3.2.6\mono\metadata/../../mono/metadata/tpool-poll.c:189:
undefined reference to `mono_gc_set_skip_thread'
  >
c:\Coding\Builds64\mono-3.2.6\mono\metadata/../../mono/metadata/tpool-poll.c:189:
undefined reference to `mono_gc_set_skip_thread'
  > ./.libs/libmonoruntime.a(libmonoruntime_la-threadpool.o): In function
`async_invoke_thread':
  > c:\Coding\Builds64\mono-3.2.6\mono\metadata/threadpool.c:1560: undefined
reference to `mono_gc_set_skip_thread'
  >
./.libs/libmonoruntime.a(libmonoruntime_la-threadpool.o):c:\Coding\Builds64\mono-3.2.6\mono\metadata/threadpool.c:1573:
more undefined references to `mono_gc_set_skip_thread' follow
this one was solved by putting the mono_gc_set_skip_thread routine outside
of the  #ifndef HOST_WIN32 guards in null-gc.c . 
c  > exceptions-amd64.c:121:6: error: 'win32_chained_exception_needs_run'
undeclared (first use in this function)
This one was coverd in BearishSuns post. 

Now make succeeds ... strangly, however, libmonoboehm.a is build along the
way. But even worse libmonosgen.a and monosgen are not build. 

So can anyone point me some direction to proceed. The ignorance for sgen
seems to me like some misconfigured Makefile. Some parts of sgen seem to be
build. I find files like
./mono/metadata/.deps/libmonoruntimesgen_la-appdomain.Plo . As a further
observation I find the following in the config.log: 
  > SUPPORT_BOEHM_FALSE='#'
  > SUPPORT_BOEHM_TRUE=''
  > SUPPORT_SGEN_FALSE=''
  > SUPPORT_SGEN_TRUE='#'
I guess that is causing the trouble. Any suggestions?

Thanks! 
Frank







--
View this message in context: http://mono.1490590.n4.nabble.com/Compile-Mono-on-Windows-64-bit-tp4661469p4661801.html
Sent from the Mono - General mailing list archive at Nabble.com.


More information about the Mono-list mailing list