[GRASS-dev] problem building grass trunk

Markus Neteler neteler at osgeo.org
Tue Oct 20 15:47:59 EDT 2009


On Tue, Oct 20, 2009 at 4:37 PM, Glynn Clements
<glynn at gclements.plus.com> wrote:
>
> Stefano Salvador wrote:
>
>> I'm trying to compile revision 39598 of grass trunk but I get a list
>> of undefined symbol for almost all modules, the output of make is:
>
>> if I run make in the first library with errors I get:
>
>> -lgrass_ -lgrass_ -lgrass_ -lgrass_
>
> Well, that's where it's going wrong.

Same problem on grass.osgeo.org - no more possibility to
create binaries and the online 7 manual.

> I suspect that it's related to r38871, which uses $(eval $(call ...))
> to define the *_LIBNAME, *LIB and *DEP variables:
>
>        libs = \
>                ARRAYSTATS:arraystats \
>                BASIC:basic \
>                BITMAP:bitmap \
>        ...
>
>        define lib_rules
>        $(1)_LIBNAME = grass_$(2)
>        ifneq ($(NEED_DEPS),)
>        $(1)LIB = -l$$($(1)_LIBNAME) $$($(1)DEPS)
>        else
>        $(1)LIB = -l$$($(1)_LIBNAME)
>        endif
>        ifneq ($(1),IOSTREAM)
>        $(1)DEP = $$(BASE_LIBDIR)/$$(LIB_PREFIX)$$($(1)_LIBNAME)$$(LIB_SUFFIX)
>        else
>        $(1)DEP = $$(BASE_LIBDIR)/$$(STLIB_PREFIX)$$($(1)_LIBNAME)$$(STLIB_SUFFIX)
>        endif
>        endef
>
>        $(foreach lib,$(libs),$(eval $(call lib_rules,$(firstword $(subst :, ,$(lib))),$(lastword $(subst :, ,$(lib))))))
>
> It looks as if $(1) is set okay, but $(2) is empty, so all of the
> *_LIBNAME variables are being set to "grass_".

Right.

> You can confirm this by
> using the -p switch (e.g. "make -p -C lib/form"), which will print all
> of the variable definitions.

Confirmed.


>> the system is SUSE 10 with gcc 4.1, I have removed each previous
>> installation of grass.
>
> FWIW, it works for me with make 3.81 (and presumably for everyone else
> who has compiled it in the last month). My first guess would be an
> issue with your version of make; which version are you using?

I am on Fedora 4 (so old, but so far ok) with
make -v
GNU Make 3.80

I think that this should continue to work... GRASS will be used
on many "ancient" machines.

Markus


More information about the grass-dev mailing list