Hard-coded paths in 2.3.7?

Christian Stimming stimming at tuhh.de
Mon Oct 26 16:32:20 EDT 2009


Am Freitag, 23. Oktober 2009 19:21 schrieb Derek Atkins:
> [snip]
>
> > This makes me wonder if a) moving the directory is the issue, or b)
> > having renamed the directory from "gnucash" to "GnuCash" (to allow me to
> > set a symlink in the same parent directory with the lower-case name) is
> > the problem.  I just tried moving / renaming things back to the way they
> > were when I compiled, and lo, it's working again.  Either way, it starts
> > to sound a bit like paths are being hardcoded somewhere during
> > compilation.
> >
> > Is this guess right?

Yes. On Unix / Linux, traditionally each program was compiled on the machine 
where is will be used, which implies the installation location is known at 
compile time, and for this reason Unix programmers really got used to the 
fact that all installation paths will be compiled into the program at compile 
time.

> > If so, could / should paths be made relative instead of absolute?

On Windows, they already have to be, because the installation location and 
installation machine is usually different from the one where the program was 
compiled. It was rather hard work until we got at least enough dynamic path 
lookup for windows into place so that gnucash will run fine. However, for the 
Unix compile, nobody went the extra mile and added full relocation support 
there as well, so currently on Unix you can't move around the compiled 
program and Derek's statement is true as of today's source code:

> They are both the issue.  You should set --prefix to where you want
> the build to live.  If you want to change it you either need a symlink
> for the whole tree, or you need to reconfigure and rebuild everything.

However, IMHO it doesn't have to be this way forever. In case you send in 
patches which improve the support for dynamic path lookup on Unix as well, I 
would gladly apply those into our source code.

In your error message with missing libqof, somewhere in the shell script you 
need to add the directory of libqof to the LD_LIBRARY_PATH variable. If you 
arrive at a stage where your code changes look interesting, feel free to send 
them here.

Regards,

Christian


More information about the gnucash-devel mailing list