How to install "libgncmod*.dll" to bin/?
Geert Janssens
janssens-geert at telenet.be
Thu May 20 12:24:16 EDT 2010
On Wednesday 19 May 2010, Tao Wang wrote:
> ./gnucash-bin: error while loading shared libraries: libgnc-qof.so.1:
> cannot open shared object file: No such file or directory.
>
> So, I have 2 questions:
>
> 1) should we just change all "pkglib_LT*" to "lib_LT*" in Makefile.am?
> which will build everything to lib/ and in Windows installation
> script, they are automatically copied to bin/
> 2) Not change "pkglib_" prefix, and installed all "libgncmod*.dll" to
> bin/ on Windows only. But how to do that? Modify configure.ac? or
> packaging/win32/install.sh(or dist.sh)?
Neither will work because the gnc-module code will explicitly look for the
modules in a lib/gnucash subdirectory.
The only clean solution I see is to complete the modularization of gnucash.
The basics are there, but it is not finished.
I'm not an expert in dynamic module loading, but what I think should happen
- change the build environment to use -rdynamic instead of -rpath for all the
gnucash internal libraries, so that these libraries won't cause the prelinker
to fail
- link the module loading code (gnc-module) statically with the main
executable. Without this, we would have a chicken-and-egg problem: it includes
the code that would be required to load itself, which is obviously not
possible.
- Finally double-check that gnc-module finds all the gnucash modules at run-
time. The location of the dynamically loaded modules could be determined
relative to the installation directory or via an environment variable set in
/etc/gnucash/environment.
This is a simple overview, but the actual implementation may be more
difficult.
As said, I'm not the expert in this area, so I am interested to hear better
solutions that are cross-platform and make gnucash' runtime paths independent
of the build configuration.
Geert
More information about the gnucash-devel
mailing list