[Mono-devel-list] Some thoughts on the windows build

Johannes Roith johannes at jroith.de
Wed Oct 1 17:37:51 EDT 2003


Hello!

Here is a small collection of info/problems with the current windows
build:

Build with:

./configure --prefix=/usr/mono-0.28 --with-gc=boehm

(prefix should be a clean directory)

- Mono builds fine without GC

- The problem is the gc.

- at first the configure script claims it can't find gc.h, etc.
This can be fixed by exporting:

export CPPFLAGS="$CPPFLAGS -I/usr/local/include"
export LDFLAGS="$LDFLAGS -I/usr/local/lib"
export CC="gcc -mno-cygwin"

Eventually adapt the path.

- It will still miss GC-malloc.

This can be solved by copying gc.dll to your lib dir /lib or /usr/lib
Gc.dll is contained in the package
http://www.go-mono.org/archive/libgc-dev.zip

- Now the configure script should pass.

The build might then stop somewhere because of different things:




Case 1:

This happens, when the libgc from the cvs module libgc is installed (I
believe):

gcc -mno-cygwin -O -g -Wall -Wunused -Wmissing-prototypes
-Wmissing-declarations
 -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs
-Wpointer-arith -Wno-
cast-qual -Wcast-align -Wwrite-strings -I/usr/local/lib -I/usr/local/lib
-o mono
sn.exe monosn.o -Wl,--export-dynamic  ../metadata/.libs/libmetadata.al
../io-lay
er/.libs/libwapi.al ../utils/.libs/libmonoutils.al
/usr/local/lib/libgc.a -lpthr
ead -L/home/Administrator/install/lib -lgthread-2.0 -lgmodule-2.0
-lglib-2.0 .li
bs/libimp-cygintl-2.a -L/usr/lib .libs/libimp-cygiconv-2.a -lws2_32
-lpsapi
/usr/local/lib/libgc.a(misc.o)(.text+0x830): In function
`GC_init_inner':
/home/Administrator/libgc/misc.c:598: undefined reference to
`gc_thread_vtable'
/usr/local/lib/libgc.a(alloc.o)(.text+0xc1b): In function
`GC_stopped_mark':
/home/Administrator/libgc/alloc.c:466: undefined reference to
`gc_thread_vtable'

/usr/local/lib/libgc.a(alloc.o)(.text+0xcb5):/home/Administrator/libgc/a
lloc.c:5
30: undefined reference to `gc_thread_vtable'
/usr/local/lib/libgc.a(alloc.o)(.text+0xe30):/home/Administrator/libgc/a
lloc.c:4
97: undefined reference to `gc_thread_vtable'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x28): In function
`GC_disable_signals':
/home/Administrator/libgc/os_dep.c:400: undefined reference to
`sigprocmask'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x38):/home/Administrator/libgc/o
s_dep.c:
377: undefined reference to `sigfillset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x4c):/home/Administrator/libgc/o
s_dep.c:
379: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x60):/home/Administrator/libgc/o
s_dep.c:
380: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x74):/home/Administrator/libgc/o
s_dep.c:
381: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x88):/home/Administrator/libgc/o
s_dep.c:
383: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x9c):/home/Administrator/libgc/o
s_dep.c:
389: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0xb0):/home/Administrator/libgc/o
s_dep.c:
392: more undefined references to `sigdelset' follow
/usr/local/lib/libgc.a(os_dep.o)(.text+0xee): In function
`GC_enable_signals':
/home/Administrator/libgc/os_dep.c:409: undefined reference to
`sigprocmask'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x199): In function
`GC_unix_get_mem':
/home/Administrator/libgc/os_dep.c:1272: undefined reference to `sbrk'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x1ba):/home/Administrator/libgc/
os_dep.c
:1277: undefined reference to `sbrk'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x1c5):/home/Administrator/libgc/
os_dep.c
:1279: undefined reference to `sbrk'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x1f7): In function
`GC_default_push_othe
r_roots':
/home/Administrator/libgc/os_dep.c:1692: undefined reference to
`gc_thread_vtabl
e'
/usr/local/lib/libgc.a(win32_threads.o)(.text+0xcad): In function
`GC_pthread_de
tach':
/home/Administrator/libgc/win32_threads.c:806: undefined reference to
`gc_thread
_vtable'
make[4]: *** [monosn.exe] Error 1
make[4]: Leaving directory
`/cygdrive/d/mono-0.28/mono-0.28/mono/metadata'
make[3]: *** [all] Error 2
make[3]: Leaving directory
`/cygdrive/d/mono-0.28/mono-0.28/mono/metadata'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/cygdrive/d/mono-0.28/mono-0.28/mono'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/cygdrive/d/mono-0.28/mono-0.28'
make: *** [all] Error 2



Case 2:

This happens, when you use the .h files from the libgc-dev.zip file.

gcc -mno-cygwin -O -g -Wall -Wunused -Wmissing-prototypes
-Wmissing-declarations
 -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs
-Wpointer-arith -Wno-
cast-qual -Wcast-align -Wwrite-strings -I/usr/local/lib -I/usr/local/lib
-o mono
sn.exe monosn.o -Wl,--export-dynamic  ../metadata/.libs/libmetadata.al
../io-lay
er/.libs/libwapi.al ../utils/.libs/libmonoutils.al
/usr/local/lib/libgc.a -lpthr
ead -L/home/Administrator/install/lib -lgthread-2.0 -lgmodule-2.0
-lglib-2.0 .li
bs/libimp-cygintl-2.a -L/usr/lib .libs/libimp-cygiconv-2.a -lws2_32
-lpsapi
/usr/local/lib/libgc.a(os_dep.o)(.text+0x28): In function
`GC_disable_signals':
/home/work/w3m/build/gc6.2/os_dep.c:558: undefined reference to
`sigprocmask'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x38):/home/work/w3m/build/gc6.2/
os_dep.c
:535: undefined reference to `sigfillset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x4c):/home/work/w3m/build/gc6.2/
os_dep.c
:537: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x60):/home/work/w3m/build/gc6.2/
os_dep.c
:538: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x74):/home/work/w3m/build/gc6.2/
os_dep.c
:539: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x88):/home/work/w3m/build/gc6.2/
os_dep.c
:541: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x9c):/home/work/w3m/build/gc6.2/
os_dep.c
:547: undefined reference to `sigdelset'
/usr/local/lib/libgc.a(os_dep.o)(.text+0xb0):/home/work/w3m/build/gc6.2/
os_dep.c
:550: more undefined references to `sigdelset' follow
/usr/local/lib/libgc.a(os_dep.o)(.text+0xee): In function
`GC_enable_signals':
/home/work/w3m/build/gc6.2/os_dep.c:567: undefined reference to
`sigprocmask'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x199): In function
`GC_unix_get_mem':
/home/work/w3m/build/gc6.2/os_dep.c:1569: undefined reference to `sbrk'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x1ba):/home/work/w3m/build/gc6.2
/os_dep.
c:1574: undefined reference to `sbrk'
/usr/local/lib/libgc.a(os_dep.o)(.text+0x1c5):/home/work/w3m/build/gc6.2
/os_dep.
c:1576: undefined reference to `sbrk'
make[4]: *** [monosn.exe] Error 1
make[4]: Leaving directory
`/cygdrive/d/mono-0.28/mono-0.28/mono/metadata'
make[3]: *** [all] Error 2
make[3]: Leaving directory
`/cygdrive/d/mono-0.28/mono-0.28/mono/metadata'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/cygdrive/d/mono-0.28/mono-0.28/mono'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/cygdrive/d/mono-0.28/mono-0.28'
make: *** [all] Error 2


There were some other cases, but I can't reproduce them again.

- if you manage to get pass that point and build mono to the new prefix

The wizard:

* delete the *.a and *.la the lib directory of the install directory
* copy monowiz.win32.nsi from cvs to /mono
* also copy the mono-setup-light.bmp file to /mono

* make win32setup
* make sure you have nsis4cygwin installed
(http://www.jroith.de/nsis4cygwin.zip)

I can - maybe - come to #mono in ~ 7 hours for a few minutes before
school starts, but I can't promise it.

In earlier releases for some reason the GC was not much of a problem. It
just depends on your current cygwin setup. I'm sorry, I don't know more
right know.

Good luck with everthing!

Johannes




More information about the Mono-devel-list mailing list