[GRASSLIST:3872] Re: GRASS 5.7 - now it compiles but can't run display manager

Glynn Clements glynn.clements at virgin.net
Sun Jul 11 22:29:30 EDT 2004


Carlos Henrique Grohmann wrote:

> I am trying to make GRASS 5.7 run on Slackware 10.0. until
> yesterday, I couldn't compile it, so I download the CVS-HEAD for 5.3
> and 5.7, used the configuration script and it compiled OK. the
> problem now is that d.m won't run. here is the error msg:
> 
> GRASS 5.7.cvs:~ > d.m &
> [1] 25635
> GRASS 5.7.cvs:~ > Error in startup script: ps.map: error while loading shared
> libraries: libdfftw.so.2: cannot open shared object file: No such file or
> directory
>     while executing
> "exec ps.map -p"

> So, why it have to call ps.map?

It runs "ps.map -p", which outputs a list of the paper sizes which
ps.map understands. This list is used to initialise the "Paper format"
combo box in the print dialog.

> and why ps.map needs fftw?

It is linked against the gmath library, which in turn requires FFTW. 
However, I can't see an obvious reason for the gmath dependency.

> I have ftw versions 2.15 and 3.0.1 installed, but no libdfftw.so.2.

One possibility is that libfftw was compiled as libdfftw.so.2 then
renamed to something else (e.g. libfftw.so.2). That won't work. Shared
libraries have their "soname" (shared object name) compiled into them,
and that name is stored in any executables which are linked against
it, and that is the name which the loader will look for when loading
the executables.

> if I made a link to other file will it work?

Yes.

> (like I have to do with
> tcl and tk 8.3 to get NVIZ working). I yes, from what file

Whichever file the linker used when it linked libgrass_gmath.so. Look
for the definition of FFTWLIB in include/Make/Platform.make. That will
contain either "-lfftw" or "-ldfftw", possibly in addition to a -L
switch. For the former, you need to locate a symlink or file named
libfftw.so, typically in /usr/lib or /usr/local/lib; for the latter,
you need to locate libdfftw.so.

> and where should the link be?

Anywhere that the loader will find it, i.e. in /usr/lib or in any of
the directories listed in /etc/ld.so.conf. Also, you need to run
ldconfig once the link has been added.

-- 
Glynn Clements <glynn.clements at virgin.net>




More information about the grass-user mailing list