3

We're about to integrate a firebird database in our software via IBPP. Accordingly to the firebird documantation this should be possible.

We already managed to use the firebird database via IBPP while the service was running. But, we want avoid to run a service. On windows we already accomplished to do this - but on the linux side there are two main differences:

Installation

On windows it is not neccessary to make an installation. On Linux it seems to be, as the docs say:

Finally, you can't just ship libfbembed.so with your application and use it to connect to local databases. Under Linux, you always need a properly installed server, be it Classic or Super.

Is this true? I found the firebird documentation beeing outdated sometimes. If this is still valid, how to deal with this installtion? Can we just run it on the customer's pc. I looked at the shell script. It starts a service. For me it seems running this service is needed during installation process. Anyway, this would be no problem if the service is running only for the installtion and is never needed afterwards - but I'm not sure about this.

IBPP

On windows you just load the DLL via loadlibrary: We put the fbembed.dll, icuuc30.dll and icudt30.dll on any_dirctory, changed the passage in IBPP where the embedded dll is called to loadlibary("any_directory\fbembed.dll") and added any_directory to PATH variable. Everything works now. (Aside: By doing this it is possible to call the database via a DLL we created using IBPP. This DLL can be used by every EXE we give to the customer withour caring about the path the EXE is places in).

But on Linux I didn't found the code where this is done. On this HOWTO it seems a special directory structure is needed. Is this really neccessary? Is it possible to place the .so-files on any_directory and run the application from another_dirctory? Is it neccessary to add loadlibary to Linux section in IBPP? (BTW: My problem is I can't really test things because Linux integration is doing someone else for me).

Semjon Mössinger
  • 1,798
  • 3
  • 22
  • 32
  • 1
    On Linux with Firebird embedded, you don't need to run the Firebird service, but Firebird embedded needs to be installed correctly. The reason for this is that the database is open shared, so all Firebird embedded instances and a running Firebird service - if any - need to share the same lockfiles, otherwise this could corrupt the database if it is open by more than one process. Technically since Firebird 2.5 this is also the case on Windows, but there you can get away with it because it uses a shared location based on Windows conventions. – Mark Rotteveel Oct 19 '15 at 07:42

0 Answers0