Lazarus does something strange when it compiles, I avoid using it for compiling non-LCL applications. For my projects I write a special .sh/.bat script and tell Lazarus run it instead of calling the compiler directly. This gives quite different results, most notable is smaller executables. While compiling directly from Lazarus often creates executables that just won't run.
Lazarus is a handy thing and I'm glad it's here, but it still weird.
but also C mem management functions like malloc/free/calloc etc.
Aha. Then it probably works for me because my program links libc due to using the libc unit (required for determining RAM size).
Try adding uses libc to your units and see if the memory management functions are there. I suspect both libc and libstdc++ have these functions.
This what I got from Visual Dependency walker on my executable.
Code:
libcrypt.so.1 /lib
libc.so.6 /lib
ld-linux.so.2 /lib
libc.so.6 /lib
ld-linux.so.2 /lib
libdl.so.2 /lib
ld-linux.so.2 /lib
libc.so.6 /lib
ld-linux.so.2 /lib
libpthread.so.0 /lib
ld-linux.so.2 /lib
libc.so.6 /lib
ld-linux.so.2 /lib
librt.so.1 /lib
ld-linux.so.2 /lib
libc.so.6 /lib
ld-linux.so.2 /lib
libpthread.so.0 /lib
ld-linux.so.2 /lib
libc.so.6 /lib
ld-linux.so.2 /lib
libX11.so.6 /usr/lib
libc.so.6 /lib
ld-linux.so.2 /lib
libdl.so.2 /lib
ld-linux.so.2 /lib
libc.so.6 /lib
ld-linux.so.2 /lib
libxcb.so.1 /usr/lib
libc.so.6 /lib
ld-linux.so.2 /lib
libXau.so.6 /usr/lib
libc.so.6 /lib
ld-linux.so.2 /lib
libXdmcp.so.6 /usr/lib
libc.so.6 /lib
ld-linux.so.2 /lib
libxcb-xlib.so.0 /usr/lib
libc.so.6 /lib
ld-linux.so.2 /lib
libxcb.so.1 /usr/lib
libc.so.6 /lib
ld-linux.so.2 /lib
libXau.so.6 /usr/lib
libc.so.6 /lib
ld-linux.so.2 /lib
libXdmcp.so.6 /usr/lib
libc.so.6 /lib
ld-linux.so.2 /lib
P.S. It still crashes spectacularly when I try to load a progressive JPEG file, allocating more than a gigabyte of RAM, pushing everything to swap, etc. No matter if I use {$DEFINE IMJPEGLIB} or {$DEFINE PASJPEG}
Bookmarks