Re: ghc 4.08 under Win98 [was: Re: ghc 4.08 under WinNT]
>* Setting TMPDIR to a path with a drive letter works, no need to > edit the Perl driver. Without a drive letter, Perl/Bash/Cygwin > seems to forget the drive and/or the location of the tmp dir. My experiments suggested that bash and perl were independently stripping out any drive letters I put into TMPDIR..., e.g. export TMPDIR=C:/tmp perl -e 'print $ENV{"TMPDIR"} . "\n";' # or whatever the syntax is; I'm # no Perl wizard resulted in: /tmp >* OK, so I've tried a simple HelloWorld app next, but failed > immediately again: The resulting main.exe can't find HSSTD.DLL. > Where is it searching? How can I find that out from an .exe? > How can I set the DLL search path at compilation time? Things > I definitely knew in the past, but happily forgot. The search order for DLLs is specified at run-time, and detailed in MSDN, but goes something like: 1. System "built-in" DLLs. 2. Directory the executable was run from 3. System path (WINNT/ &c.). 4. Current directory (hell security!) 5. PATH > Main.o(.text+0x1c):fake: undefined reference to >`_imp__PrelBase_unpackCStringzh_closure' > Main.o(.text+0x20):fake: undefined reference to >`_imp__PrelIO_putStrLn_closure' > Main.o(.text+0x3a):fake: undefined reference to `_imp__stg_gc_enter_1' > Main.o(.text+0x3f):fake: undefined reference to `_imp__upd_frame_info' > Main.o(.text+0x66):fake: undefined reference to >`_imp__PrelBase_unpackCStringzh_closure' > Main.o(.text+0x8e):fake: undefined reference to `_imp__stg_gc_enter_1' > Main.o(.text+0x93):fake: undefined reference to `_imp__CAF_BLACKHOLE_info' > Main.o(.text+0x9b):fake: undefined reference to `_imp__IND_STATIC_info' > Main.o(.text+0xb1):fake: undefined reference to `_imp__upd_frame_info' > Main.o(.text+0xd9):fake: undefined reference to >`_imp__PrelIO_putStrLn_closure' > collect2: ld returned 1 exit status Yup, this ain't gonna work. > At least Cygwin didn't crash my Win98 box, which it easily does after > emitting some obscure error messages when -split-objs is given to GHC > for large files. I forgot the exact text of the messages, but cut'n'paste > is a little bit hard when your box is thrashing and about to die in the > next 3 seconds. Don't *ever* use -split-objs on Windows. I never had a crash as a result, but I had major thrashing. Don't even think about building DLLs this way, it's horrible. -- http://sc3d.org/rrt/ | Si hoc legere scis nimium eruditionis habes.
ghc 4.08 under Win98 [was: Re: ghc 4.08 under WinNT]
I've just tried to fix that stub file problem on Win98 and now I'm even more confused: * Setting TMPDIR to a path with a drive letter works, no need to edit the Perl driver. Without a drive letter, Perl/Bash/Cygwin seems to forget the drive and/or the location of the tmp dir. * OK, so I've tried a simple HelloWorld app next, but failed immediately again: The resulting main.exe can't find HSSTD.DLL. Where is it searching? How can I find that out from an .exe? How can I set the DLL search path at compilation time? Things I definitely knew in the past, but happily forgot. * Cunningly I've tried -static then, but linking failed with: Main.o(.text+0x1c):fake: undefined reference to `_imp__PrelBase_unpackCStringzh_closure' Main.o(.text+0x20):fake: undefined reference to `_imp__PrelIO_putStrLn_closure' Main.o(.text+0x3a):fake: undefined reference to `_imp__stg_gc_enter_1' Main.o(.text+0x3f):fake: undefined reference to `_imp__upd_frame_info' Main.o(.text+0x66):fake: undefined reference to `_imp__PrelBase_unpackCStringzh_closure' Main.o(.text+0x8e):fake: undefined reference to `_imp__stg_gc_enter_1' Main.o(.text+0x93):fake: undefined reference to `_imp__CAF_BLACKHOLE_info' Main.o(.text+0x9b):fake: undefined reference to `_imp__IND_STATIC_info' Main.o(.text+0xb1):fake: undefined reference to `_imp__upd_frame_info' Main.o(.text+0xd9):fake: undefined reference to `_imp__PrelIO_putStrLn_closure' collect2: ld returned 1 exit status At least Cygwin didn't crash my Win98 box, which it easily does after emitting some obscure error messages when -split-objs is given to GHC for large files. I forgot the exact text of the messages, but cut'n'paste is a little bit hard when your box is thrashing and about to die in the next 3 seconds. Although I'd really like to make a compatibility release for HOpenGL, personally I declare Windows deprecated for now and switch back to Diablo II... Frustrated, Sven
En: ghc 4.08 under WinNT
I would like just to say that I had no problems to upgrade my GHC 4.045 to 4.08 in WinNT 4.0 Workstation... My biggest problems was during 4.045 installation when I had to set a path with a MS strange directory (c:/tmp instead of c:\tmp) and perl. > - Original Message - > From: Sven Panne <[EMAIL PROTECTED]> > To: GHC Users <[EMAIL PROTECTED]> > Sent: Sunday, July 23, 2000 1:25 PM > Subject: Re: ghc 4.08 under WinNT > > > > It seems like the saga continues: With Reuben's TMPDIR-fix the > > handling of stub files (for foreign export dynamic) is broken: > > > >... > >Copy foreign export C stubs: > >rm -f GLU_Quadrics_stub.c && echo '#include "GLU_Quadrics_stub.h"' > > GLU_Quadrics_stub.c && cat C:/tmp/ghc1139_stb.c >> GLU_Quadrics_stub.c > >0.00user 0.00system 0:00.11elapsed 0%CPU (0avgtext+0avgdata > 0maxresident)k > >0inputs+0outputs (0major+0minor)pagefaults 0swaps > > > >C compiler: > > > > > > gcc -v -S -Wimplicit -O -mno-cygwin -DSTOLEN_X86_REGS=4 -I. -Id:/programm > e/ghc-4.08/lib/includes ghc1139.c > C:/tmp/ghc1139.ccout 2>&1 && ( if > ghc1139.s != C:/tmp/ghc1139.s ] ; then mv ghc1139.s C:/tmp/ghc1139.s ; else > exit 0 ; fi ) > >mv: cannot move `ghc1139.s' to `C:/tmp/ghc1139.s': File exists > > > > Double-*sigh* :-( The invention of drive letters marks one of the > > darkest days in computer science... > > > > Cheers, > >Sven > > >
Re: ghc 4.08 under WinNT
It seems like the saga continues: With Reuben's TMPDIR-fix the handling of stub files (for foreign export dynamic) is broken: ... Copy foreign export C stubs: rm -f GLU_Quadrics_stub.c && echo '#include "GLU_Quadrics_stub.h"' > GLU_Quadrics_stub.c && cat C:/tmp/ghc1139_stb.c >> GLU_Quadrics_stub.c 0.00user 0.00system 0:00.11elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+0minor)pagefaults 0swaps C compiler: gcc -v -S -Wimplicit -O -mno-cygwin -DSTOLEN_X86_REGS=4 -I. -Id:/programme/ghc-4.08/lib/includes ghc1139.c > C:/tmp/ghc1139.ccout 2>&1 && ( if [ ghc1139.s != C:/tmp/ghc1139.s ] ; then mv ghc1139.s C:/tmp/ghc1139.s ; else exit 0 ; fi ) mv: cannot move `ghc1139.s' to `C:/tmp/ghc1139.s': File exists Double-*sigh* :-( The invention of drive letters marks one of the darkest days in computer science... Cheers, Sven
Re: ghc 4.08 under WinNT
> I spoke too soon. I can only compile from C:\ not from any > subdirectory, i.e. not just failure from another drive. This I can't reproduce. Failure to compile from another drive, I can. A fix is to edit C:/ghc/ghc-4.08/bin/ghc in the following way: change the definition of $TMPDIR near the top to be $TMPDIR='C:/tmp'; and lower down find the line that says if ( $ENV{'TMPDIR'} ) ... and insert $ENV{'TMPDIR'} = $TMPDIR; directly before it. Fiddling with the driver script directly is necessary because even if you set the environment variable TMPDIR to C:/tmp, bash reduces it to /tmp, and even if you set it in your .bashrc, Perl mangles it to /tmp. Aargh. -- http://sc3d.org/rrt/ L'art des vers est de transformer en beautés les faiblesses (Aragon)