[Mono-list] Error building Mono for Windows 9x

Andreas Färber andreas.faerber at web.de
Wed Apr 19 16:45:57 EDT 2006


Hi,

I am looking for a way to integrate a Windows 95 based legacy system
with my .NET 2.0 based solution... I have checked on a virgin Windows 95
virtual server that the Microsoft .NET Framework 2.0 redistributable
does not install on Windows 95: The Windows Installer package is not
usable without an Install.exe that depends on
kernel32.dll!IsDebuggerPresent which is not present on the system; this
appears to be a Visual C++ runtime dependency that can only be resolved
by recompiling with a previous runtime version.

My plan was to compile Mono with MSLU and run a managed console server
application on Mono on Windows 95 to provide access to the legacy data
from there.
So I figured I need to cross-compile the unicows-aware Mono from XP
because in order to compile Mono on 95 I would need a working
installation of Mono, right?
Thus I have setup a virgin Cygwin installation on an XP box and have
followed the standard instructions for compiling Mono 1.1.15 on Windows;
apparently the Wiki topic
(http://www.mono-project.com/Compiling_Mono#Windows_Compilation)
contains the following "errors":
- it appears I need to install gcc-g++ as well for ./configure to
succeed (otherwise it exits and complains about the cpp preprocessor)
- the command line for do-install-zip-pkgs is out-of-date (a second
parameter has been inserted, so that the first zip file is added to the
path if used as described)
The FAQ entry
(http://www.mono-project.com/FAQ:_Technical#Can_Mono_run_on_Windows_9x.2C_or_ME_editions.3F)
does not say where to find the linker specs file - I figured
<cygwin>\lib\gcc\i686-pc-cygwin\<version>\specs. I put unimono.lib into
/lib/w32api as suggested and unimono.dll and unicows.dll into
/usr/local/bin so that they are in $PATH; Mono 1.1.15 from the Installer
is in the PATH too (and runnable).

But when I do make, ld fails in mono/mini. Attached is the combined
stdout/stderr output of a subsequent make and my specs file. What might
I be doing wrong?

<excerpt file="mono.log">
gcc -g -shared .libs/mini.o .libs/jit-icalls.o .libs/trace.o
.libs/dominators.o .libs/cfold.o .libs/regalloc.o .libs/helpers.o
.libs/liveness.o .libs/ssa.o .libs/abcremoval.o .libs/ssapre.o
.libs/aliasing.o .libs/local-propagation.o .libs/driver.o
.libs/debug-mini.o .libs/linear-scan.o .libs/aot.o .libs/graph.o
.libs/mini-exceptions.o .libs/declsec.o .libs/wapihandles.o
.libs/branch-opts.o .libs/mini-x86.o .libs/exceptions-x86.o
.libs/tramp-x86.o .libs/mini-codegen.o .libs/mini-trampolines.o
.libs/inssel.o -Wl,--whole-archive
../../mono/metadata/.libs/libmonoruntime.a
../../mono/io-layer/.libs/libwapi.a
../../mono/utils/.libs/libmonoutils.a ../../libgc/.libs/libmonogc.a
-Wl,--no-whole-archive -L/tmp/lib -LC:/cygwin/usr/Mono-1.1.15/lib
-lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl -liconv -lws2_32 -lpsapi
-lole32 -mno-cygwin -mno-tls-direct-seg-refs
-Wl,-version-script=./ldscript -o .libs/mono-1.dll
-Wl,--image-base=0x10000000 -Wl,--out-implib,.libs/libmono.dll.a
Cannot export .idata$4: symbol not found
Cannot export .idata$5: symbol not found
Cannot export .idata$6: symbol not found
Cannot export .text: symbol not found
Cannot export ?unimono_NULL_THUNK_DATA: symbol not found
Creating library file: .libs/libmono.dll.a
collect2: ld returned 1 exit status
make[4]: *** [libmono.la] Error 1
make[4]: Leaving directory `/tmp/mono-1.1.15/mono/mini'
</excerpt>

<excerpt file="specs">
*lib:
%{pg:-lgmon} %{!mno-cygwin:-lcygwin}
%{mno-cygwin:%{mthreads:-lmingwthrd} -lmingw32} -lunimono
%{mwindows:-lgdi32 -lcomdlg32} -luser32 -lkernel32 -ladvapi32 -lshell32
</excerpt>

I've already tried renaming unimono.lib to libunimono.a (inline with the
other files in /lib/w32api) and moving around the DLLs to various
locations, without success. Does the downloadable unimono need to be
updated for 1.1.15? The weird non-ASCII char before unimono is being
displayed as a capital Delta in Cygwin bash; this symbol seems odd for
an exported symbol and the four others probably shouldn't appear either...?

Let me know what additional info might be useful, and thanks for any hints!

Andreas
-------------- next part --------------
make  all-recursive
make[1]: Entering directory `/tmp/mono-1.1.15'
Making all in libgc
make[2]: Entering directory `/tmp/mono-1.1.15/libgc'
Making all in include
make[3]: Entering directory `/tmp/mono-1.1.15/libgc/include'
Making all in private
make[4]: Entering directory `/tmp/mono-1.1.15/libgc/include/private'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/tmp/mono-1.1.15/libgc/include/private'
make[4]: Entering directory `/tmp/mono-1.1.15/libgc/include'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/tmp/mono-1.1.15/libgc/include'
make[3]: Leaving directory `/tmp/mono-1.1.15/libgc/include'
Making all in doc
make[3]: Entering directory `/tmp/mono-1.1.15/libgc/doc'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/mono-1.1.15/libgc/doc'
make[3]: Entering directory `/tmp/mono-1.1.15/libgc'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/tmp/mono-1.1.15/libgc'
make[2]: Leaving directory `/tmp/mono-1.1.15/libgc'
Making all in mono
make[2]: Entering directory `/tmp/mono-1.1.15/mono'
Making all in utils
make[3]: Entering directory `/tmp/mono-1.1.15/mono/utils'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/mono-1.1.15/mono/utils'
Making all in io-layer
make[3]: Entering directory `/tmp/mono-1.1.15/mono/io-layer'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/mono-1.1.15/mono/io-layer'
Making all in monoburg
make[3]: Entering directory `/tmp/mono-1.1.15/mono/monoburg'
make  all-am
make[4]: Entering directory `/tmp/mono-1.1.15/mono/monoburg'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/tmp/mono-1.1.15/mono/monoburg'
make[3]: Leaving directory `/tmp/mono-1.1.15/mono/monoburg'
Making all in os
make[3]: Entering directory `/tmp/mono-1.1.15/mono/os'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/mono-1.1.15/mono/os'
Making all in cil
make[3]: Entering directory `/tmp/mono-1.1.15/mono/cil'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/mono-1.1.15/mono/cil'
Making all in metadata
make[3]: Entering directory `/tmp/mono-1.1.15/mono/metadata'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/mono-1.1.15/mono/metadata'
Making all in arch
make[3]: Entering directory `/tmp/mono-1.1.15/mono/arch'
make[4]: Entering directory `/tmp/mono-1.1.15/mono/arch'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/tmp/mono-1.1.15/mono/arch'
make[3]: Leaving directory `/tmp/mono-1.1.15/mono/arch'
Making all in interpreter
make[3]: Entering directory `/tmp/mono-1.1.15/mono/interpreter'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/tmp/mono-1.1.15/mono/interpreter'
Making all in mini
make[3]: Entering directory `/tmp/mono-1.1.15/mono/mini'
make  all-am
make[4]: Entering directory `/tmp/mono-1.1.15/mono/mini'
/bin/sh ../../libtool --tag=CC --mode=link gcc -mno-cygwin -g -I../.. -I../../libgc/include -IC:/cygwin/usr/Mono-1.1.15/include/glib-2.0 -IC:/cygwin/usr/Mono-1.1.15/lib/glib-2.0/include   -IC:/cygwin/usr/Mono-1.1.15/include/glib-2.0 -IC:/cygwin/usr/Mono-1.1.15/lib/glib-2.0/include   -g -O2 -fno-strict-aliasing -Wdeclaration-after-statement -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wcast-align -Wwrite-strings -mno-tls-direct-seg-refs  -L/tmp/lib -o libmono.la -rpath /tmp/install/lib -no-undefined -version-info 1:0:0 -Wl,-version-script=./ldscript mini.lo jit-icalls.lo trace.lo dominators.lo cfold.lo regalloc.lo helpers.lo liveness.lo ssa.lo abcremoval.lo ssapre.lo aliasing.lo local-propagation.lo driver.lo debug-mini.lo linear-scan.lo aot.lo graph.lo mini-exceptions.lo declsec.lo wapihandles.lo branch-opts.lo mini-x86.lo exceptions-x86.lo tramp-x86.lo mini-codegen.lo mini-trampolines.lo  inssel.lo ../../mono/metadata/libmonoruntime.la ../../mono/io-layer/libwapi.la ../../mono/utils/libmonoutils.la -LC:/cygwin/usr/Mono-1.1.15/lib -lgmodule-2.0 -lglib-2.0 -lintl -liconv   -LC:/cygwin/usr/Mono-1.1.15/lib -lgthread-2.0 -lglib-2.0 -lintl -liconv   ../../libgc/libmonogc.la  -lws2_32 -lpsapi -lole32
rm -fr  .libs/libmono.dll.a
gcc  -g -shared  .libs/mini.o .libs/jit-icalls.o .libs/trace.o .libs/dominators.o .libs/cfold.o .libs/regalloc.o .libs/helpers.o .libs/liveness.o .libs/ssa.o .libs/abcremoval.o .libs/ssapre.o .libs/aliasing.o .libs/local-propagation.o .libs/driver.o .libs/debug-mini.o .libs/linear-scan.o .libs/aot.o .libs/graph.o .libs/mini-exceptions.o .libs/declsec.o .libs/wapihandles.o .libs/branch-opts.o .libs/mini-x86.o .libs/exceptions-x86.o .libs/tramp-x86.o .libs/mini-codegen.o .libs/mini-trampolines.o .libs/inssel.o -Wl,--whole-archive ../../mono/metadata/.libs/libmonoruntime.a ../../mono/io-layer/.libs/libwapi.a ../../mono/utils/.libs/libmonoutils.a ../../libgc/.libs/libmonogc.a -Wl,--no-whole-archive  -L/tmp/lib -LC:/cygwin/usr/Mono-1.1.15/lib -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl -liconv -lws2_32 -lpsapi -lole32  -mno-cygwin -mno-tls-direct-seg-refs -Wl,-version-script=./ldscript -o .libs/mono-1.dll -Wl,--image-base=0x10000000 -Wl,--out-implib,.libs/libmono.dll.a
Cannot export .idata$4: symbol not found
Cannot export .idata$5: symbol not found
Cannot export .idata$6: symbol not found
Cannot export .text: symbol not found
Cannot export unimono_NULL_THUNK_DATA: symbol not found
Creating library file: .libs/libmono.dll.a
collect2: ld returned 1 exit status
make[4]: *** [libmono.la] Error 1
make[4]: Leaving directory `/tmp/mono-1.1.15/mono/mini'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/tmp/mono-1.1.15/mono/mini'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/tmp/mono-1.1.15/mono'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/mono-1.1.15'
make: *** [all] Error 2
-------------- next part --------------
*asm:


*asm_debug:
%{gdwarf-2*:--gdwarf2}%{!gdwarf-2*:%{g*:--gstabs}}

*asm_final:


*asm_options:
%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}

*invoke_as:
%{!S:-o %|.s |
 as %(asm_options) %m.s %A }

*cpp:
%(cpp_cpu) %{posix:-D_POSIX_SOURCE}   %{mno-win32:%{mno-cygwin: %emno-cygwin and mno-win32 are not compatible}}   %{mno-cygwin:-D__MSVCRT__ -D__MINGW32__ %{!ansi:%{mthreads:-D_MT}}}  %{!mno-cygwin:-D__CYGWIN32__ -D__CYGWIN__ %{!ansi:-Dunix} -D__unix__ -D__unix }  %{mwin32|mno-cygwin:-DWIN32 -D_WIN32 -D__WIN32 -D__WIN32__ %{!ansi:-DWINNT}}  %{!nostdinc:%{!mno-win32|mno-cygwin:-idirafter ../include/w32api%s -idirafter ../../include/w32api%s}}

*cpp_options:
%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w} %{f*} %{g*:%{!g0:%{!fno-working-directory:-fworking-directory}}} %{O*} %{undef}

*cpp_debug_options:
%{d*}

*cpp_unique_options:
%{C|CC:%{!E:%eGCC does not support -C or -CC without -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}} %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{E|M|MM:%W{o*}}

*trad_capable_cpp:
cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}

*cc1:
%(cc1_cpu) 

*cc1_options:
%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*&ansi&trigraphs} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*}

*cc1plus:


*link_gcc_c_sequence:
%G %L %G

*endfile:


*link:
  %{mwindows:--subsystem windows}   %{mconsole:--subsystem console}   %{shared: %{mdll: %eshared and mdll are not compatible}}   %{shared: --shared} %{mdll:--dll}   %{static:-Bstatic} %{!static:-Bdynamic}   %{shared|mdll: -e     %{mno-cygwin:_DllMainCRTStartup at 12}     %{!mno-cygwin:__cygwin_dll_entry at 12}}  %{!mno-cygwin:--dll-search-prefix=cyg}

*lib:
  %{pg:-lgmon}   %{!mno-cygwin:-lcygwin}   %{mno-cygwin:%{mthreads:-lmingwthrd} -lmingw32}  -lunimono   %{mwindows:-lgdi32 -lcomdlg32}   -luser32 -lkernel32 -ladvapi32 -lshell32

*libgcc:
%{mno-cygwin: %{mthreads:-lmingwthrd} -lmingw32} -lgcc	   %{mno-cygwin:-lmoldname -lmingwex -lmsvcrt}

*startfile:
  %{shared|mdll: %{mno-cygwin:dllcrt2%O%s}}  %{!shared: %{!mdll: %{!mno-cygwin:crt0%O%s} %{mno-cygwin:crt2%O%s}  %{pg:gcrt0%O%s}}}

*switches_need_spaces:


*cross_compile:
0

*version:
3.4.4

*multilib:
. ;

*multilib_defaults:


*multilib_extra:


*multilib_matches:


*multilib_exclusions:


*multilib_options:


*linker:
collect2

*link_libgcc:
%D

*md_exec_prefix:


*md_startfile_prefix:


*md_startfile_prefix_1:


*startfile_prefix_spec:


*sysroot_suffix_spec:


*sysroot_hdrs_suffix_spec:


*cc1_cpu:
%{!mtune*: %{m386:mtune=i386 %n`-m386' is deprecated. Use `-march=i386' or `-mtune=i386' instead.
} %{m486:-mtune=i486 %n`-m486' is deprecated. Use `-march=i486' or `-mtune=i486' instead.
} %{mpentium:-mtune=pentium %n`-mpentium' is deprecated. Use `-march=pentium' or `-mtune=pentium' instead.
} %{mpentiumpro:-mtune=pentiumpro %n`-mpentiumpro' is deprecated. Use `-march=pentiumpro' or `-mtune=pentiumpro' instead.
} %{mcpu=*:-mtune=%* %n`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
}} %<mcpu=* %{mpni:-msse3 %n`-mpni' is deprecated. Use `-msse3' instead.
} %{mno-pni:-mno-sse3 %n`-mno-pni' is deprecated. Use `-mno-sse3' instead.
} %{mintel-syntax:-masm=intel %n`-mintel-syntax' is deprecated. Use `-masm=intel' instead.
} %{mno-intel-syntax:-masm=att %n`-mno-intel-syntax' is deprecated. Use `-masm=att' instead.
}

*mingw_include_path:
i686-pc-cygwin

*link_command:
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:    %(linker) %l %{pie:-pie} %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}    %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}    %{static:} %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate:-lgcov}    %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}}    %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}



More information about the Mono-list mailing list