This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project. See the Cygwin home page for more information.
Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: problem building tcl/tk 8.0.3 using egcs-1.1.2/msvcrt40


Paul Thiessen <paul@grserv.med.jhmi.edu> writes:
> Hi. I'm using Mumit Khan's mingw32/egcs-1.1.2 with his msvcrt40-runtime
> stuff installed. I'm trying to build tcl 8.0.3, with source patches again
> provided by Mr. Khan, which compiles fine w/o the msvcrt40 update. I have
> a couple of questions:
> 
> 1) What's the advantage of using msvcrt? Should I bother with Q #2, or
> is it not worth it?

Depends on your application. MSVCRT has quite possibly better threading 
support than CRTDLL, and has bug fixes that CRTDLL may or may not have.
However, for most part, CRTDLL works just as well as MSVCRT. Using MSVCRT
has one advantage -- since most of the MS apps use MSVCRT, it's already
loaded on the system, and CRTDLL apps need to load that as well. However,
it's just a bit of extra RAM.

The short answer is that it depends on what you need. I do just fine with
CRTDLL.

> 2) When I do the compile (using the provided Makefile.gnu), dllwrap gives
> me errors of the sort:
> 
> ./tclEnv.o(.text+0x365):tclEnv.c: undefined reference to
> `__imp__environ_dll'
> ./tclWinTime.o(.text+0x21):tclWinTime.c: undefined reference to
> `__imp__timezone_dll'
> ./tclWinTime.o(.text+0x4ad):tclWinTime.c: undefined reference to
> `__imp__daylight_dll'
> 

That means that either you have installed msvcrt runtime support correctly
(as Earnie points out, you're not passing -D__MSVCRT__ correctly, which
is done when you install the msvcrt runtime), or you didn't recompile all
of tcl when you moved to msvcrt.

The other reason may be that I didn't build it for msvcrt and didn't
notice these problems. 

> Again, I have changed nothing from the working compile - haven't touched
> the tcl tree at all, but only unpacked the egcs-1.1.2-msvcrt40-runtime.zip
> file into my egcs tree, removed the old tcl*.dll, and re-ran make.
>   Is there some way to fix this? I'm not nearly expert enough to track
> down just where these symbols are coming from, but if someone could give
> me some brief advice, perhaps I'll attempt it in order to better learn
> how all this works - I'm new to mingw32 and the whole process of building
> DLL's, so this might be educational... :) I'd just like to know where to
> start looking.

Remove all the .o, .a etc files as well. MSVCRT support requires that
everything be recompiled, not just relinked.

Regards,
Mumit


--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com