After much investigation and head scratching, I believe that what I want to do with free pascal on linux is just not possible (yet).

Having a seperate memory manager in a .so works fine when you just want to use it from an application, but as soon as you want to use it in other .so's you start to hit problems. What I am doing is a little more difficult becasue I am trying to export classes from the .so's to not only the main application but also to the other .so's.

For example

I have the libcore.so which is my memory manager and logger.

I then have libkernel.so which contains all the platform specific stuff in my case this exports a class which create an SDL window and handles loading images and all the vector maths.

I then has libglrenderer.so which uses the exported window class to get information on the window and actually handles drawing stuff in opengl.

Then there is the libscene.so which is scene management and uses the libglrenderer and the libkernel.

All of this is tied together by the main application.

but it seems that under linux this just won't work. So...where to go from here :?: Abandon linux and MacOSX support? Switch to Kylix (no longer supported and I don't know if it can do what I want either). completely rework the engine so it does not use classes.

frankly I don't know.