On 18 May 2001, Alexandre Julliard wrote:
Francois Gouget fgouget@free.fr writes:
So I'm in favor of uncommenting the calls in Coerce, and if these cases are really being used then either we do a full-fledged implementation or we write pseudo-stubs for these functions.
Do we have a know app that crashes with this patch?
It won't ever get to crashing, since it doesn't even link!
Sorry about that. I missed it somehow.
Try a make checklink and you'll see.
I did not know about checklink.
Unfortunately because of the way we link libraries you can actually create a .so that contains undefined symbols; it will only fail at load-time. This is why we have make checklink to spot this kind of problems at compile-time.
Yes I know. It's a pain too for winelib applications. It makes detecting errors at compile time pretty difficult.
Maybe checklink should be part of the winelib development tools? And maybe it should be systematically called after a link?
Hmmm, is 'make checklink' supposed to work in the top-level directory? I get:
$ make checklink gcc -o checklink ./library/checklink.c -L./library -lwine -lncurses -lm -lutil -ldl && rm -f checklink make[1]: Entering directory `/home/fgouget/wine/wine.ref/dlls' make[2]: Entering directory `/home/fgouget/wine/wine.ref/dlls/ddraw' gcc -o checklink ../../library/checklink.c -L. -lddraw -L../../library -lwine -L../../ole -lwine_uuid -lncurses -lm -lutil -ldl && rm -f checklink /usr/bin/ld: warning: libuser32.so, needed by ./libddraw.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libx11drv.so, needed by ./libddraw.so, not found (try using -rpath or -rpath-link) ...
We should set LD_LIBRARY_PATH like for winebuild & co...
Even after setting LD_LIBRARY_PATH I get the following though:
$ make checklink gcc -o checklink ./library/checklink.c -L./library -lwine -lncurses -lm -lutil -ldl && rm -f checklink make[1]: Entering directory `/home/fgouget/wine/wine.ref/dlls' make[2]: Entering directory `/home/fgouget/wine/wine.ref/dlls/ddraw' gcc -o checklink ../../library/checklink.c -L. -lddraw -L../../library -lwine -L../../ole -lwine_uuid -lncurses -lm -lutil -ldl && rm -f checklink /usr/X11R6/lib/libXpm.so.4: undefined reference to `atexit' collect2: ld returned 1 exit status ...
That's strange. Shouldn't atexit be defined in the C library? (I have the 2.2.3-1 .deb here).
-- Francois Gouget fgouget@free.fr http://fgouget.free.fr/ {free} || die "";