Francois Gouget fgouget@free.fr writes:
It won't ever get to crashing, since it doesn't even link! Try a make checklink and you'll see.
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.
On 18 May 2001, Alexandre Julliard wrote:
Sorry about that. I missed it somehow.
Try a make checklink and you'll see.
I did not know about checklink.
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 "";