That should be a : btw, not a ; my bad.
No I haven't investigated, I don't have the time to mimick the circumstances atm, and in general avoid creating shared libs on *nix, so it is not really my area of expertise.
I didn't have the time to test your code too. I'm writing this during my job time and I'm far behind schedule, thus isn't much what I can do ATM and near future.
But we use libraries (with dynamic and static linking and currently I'm moving everything to the dynamic way) on Linux and windows. We are connecting to hardware and third-party servers trhough our own libraries and everything is working smoothly with same code on both OSes and without using IFDEFs.
AFAICS it can be caused by:
1- something silly, like file name / path miss spelled.
2- something more serioius like a difference on ARM's Linux which could cause a problem with FPC's dynlib.pas (least probable).
You can check point 2 easily by trying to run an app with ZEOS which uses dynlib to connect to DB. Lets say if youinstall SQLite3 on your ARM device and try to open or create a new SQLite DB using TZConnection. If no error then everything's great. you also can avoid instaling SQLite-3 and copy the library to your test proyect folder an try the following code :
Put a TZConnection, a TOpenDialog, and a TButton on a form and a put this code inside the TButton.OnClick event:
if OpenDialog1.Execute then begin
ZConnection1.LibraryLocation := OpenDialog1.FileName;
ZConnection1.Database := Application.Location+'test.db';
ZConnection1.Protocl := 'sqlite-3';
ZConnection1.Connect;
end;
Execute it and select the sqlite 3 library file from the dialog and press OK button. if everything is fine a new file with the name "test.db" will appear in the same folder as the binary is.