[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: Installation Problem



On Thursday 20 July 2006 02:13, Art Fore wrote:
> Still having problem with gEDA installation on Suse 10.1. I get the
> following. Noting shows up under libtermcap in yast, libreadline-java
> exists though. Any suggestions on what the problem is? I am not that
> knowledgeable on these things.
> 
> Art
> 
> 
>   /home/afore/geda-sources/gnucap/gnucap-2006-01-17
> ./configure --prefix=/home/afore/geda-install
> Configuring gnucap using --prefix=/home/afore/geda-install
> usr/lib/gcc/i586-suse-linux/4.1.0/../../../../i586-suse-linux/bin/ld: cannot find -ltermcap
> collect2: ld returned 1 exit status
> either libtermcap or libreadline is missing - not using readline

The configure script did not find the library, so it disabled the
features that require it.  It will compile ok, but missing some features.
The missing feature is command line editing.

===========================
g++ -DHAS_READLINE -DUNIX -O2 -DNDEBUG -I.. -I. -W -c ../globals.cc
../e_card.h: In function 'CARD_LIST::fat_iterator findbranch(CS&, CARD_LIST*)':
../e_card.h:152: error: cannot convert 'CARD_LIST::fat_iterator' to 'CARD_LIST*' for argument '2' to 'CARD_LIST::fat_iterator findbranch(CS&, CARD_LIST*)'
../e_compon.h: In member function 'void COMPONENT::attach_common(COMMON_COMPONENT*)':
../e_compon.h:139: error: '::attach_common' has not been declared
../e_compon.h: In member function 'void COMPONENT::detach_common()':
../e_compon.h:140: error: '::detach_common' has not been declared
make[2]: *** [globals.o] Error 1
=============================
(I replaced the one you sent with one that doesn't have color changes,
because it is more readable in email that way.)

This relates to a change in the C++ language spec, regarding friends. 
The compiler was changed with gcc 4.1, breaking code done to the old 
standard.

From the gcc documentation:
====================
 `-ffriend-injection'
      Inject friend functions into the enclosing namespace, so that they
      are visible outside the scope of the class in which they are
      declared.  Friend functions were documented to work this way in
      the old Annotated C++ Reference Manual, and versions of G++ before
      4.1 always worked that way.  However, in ISO C++ a friend function
      which is not declared in an enclosing scope can only be found
      using argument dependent lookup.  This option causes friends to be
      injected as they were in earlier releases.
=============================
Gnucap was done according to the "old Annotated C++ Reference Manual".

The best way to handle the problem is to get the latest 
development version of gnucap.
Official site:
http://www.gnucap.org/devel/gnucap-2006-07-08.tar.gz
Mirrors:
http://www.geda.seul.org/dist/gnucap-2006-07-08.tar.gz

Alternatively, you can patch the one you have:

Change the file src/configure, line 22:
from:
 echo "-DUNIX -O2 -DNDEBUG -I.. -I. -W" >>Make.ccflags
to:
 echo "-DUNIX -O2 -DNDEBUG -I.. -I. -W -ffriend-injection" >>Make.ccflags

This adds the compiler option "-ffriend-injection", which reverts to
the old behavior.

A third way to deal with this is to use an older compiler. 
It works on 4.0.



_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user