Обсуждение: readline missing on linux?

Поиск
Список
Период
Сортировка

readline missing on linux?

От
"Randolph Jones"
Дата:
I am getting configure failures due to missing readline.
I have redhat 9, 2.4.21, with readline and readline-devel 2.4.2 installed.
I am trying to build 7.3.3
Below is part of my config.log
Any help greatly appreciated
TIA
rfjones

}
configure:5786: result: no
configure:5800: checking for readline
configure:5837: gcc -o conftest -O2     conftest.c -lreadline -lcrypt
-lresolv -lnsl -ldl -lm -lbsd  >&5
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
undefined reference to `tgetnum'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
undefined reference to `tgoto'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
undefined reference to `tgetflag'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
undefined reference to `BC'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
undefined reference to `tputs'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
undefined reference to `PC'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
undefined reference to `tgetent'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
undefined reference to `UP'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
undefined reference to `tgetstr'
collect2: ld returned 1 exit status
configure:5840: $? = 1
configure: failed program was:
#line 5811 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char readline ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
readline ();
  ;
  return 0;
}
configure:5837: gcc -o conftest -O2     conftest.c -ledit -lcrypt
-lresolv -lnsl -ldl -lm -lbsd  >&5
/usr/bin/ld: cannot find -ledit
collect2: ld returned 1 exit status
configure:5840: $? = 1
configure: failed program was:
#line 5811 "configure"
#include "confdefs.h"


Re: readline missing on linux?

От
Bruce Momjian
Дата:
It appears your readline needs -ltermcap, -lterminfo, or -lcurses to
link properly.  I think this happens when the readline library is not
linked against those when it is created.

---------------------------------------------------------------------------

Randolph Jones wrote:
> I am getting configure failures due to missing readline.
> I have redhat 9, 2.4.21, with readline and readline-devel 2.4.2 installed.
> I am trying to build 7.3.3
> Below is part of my config.log
> Any help greatly appreciated
> TIA
> rfjones
>
> }
> configure:5786: result: no
> configure:5800: checking for readline
> configure:5837: gcc -o conftest -O2     conftest.c -lreadline -lcrypt
> -lresolv -lnsl -ldl -lm -lbsd  >&5
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
> undefined reference to `tgetnum'
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
> undefined reference to `tgoto'
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
> undefined reference to `tgetflag'
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
> undefined reference to `BC'
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
> undefined reference to `tputs'
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
> undefined reference to `PC'
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
> undefined reference to `tgetent'
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
> undefined reference to `UP'
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libreadline.so:
> undefined reference to `tgetstr'
> collect2: ld returned 1 exit status
> configure:5840: $? = 1
> configure: failed program was:
> #line 5811 "configure"
> #include "confdefs.h"
>
> /* Override any gcc2 internal prototype to avoid an error.  */
> #ifdef __cplusplus
> extern "C"
> #endif
> /* We use char because int might match the return type of a gcc2
>    builtin and then its argument prototype would still apply.  */
> char readline ();
> #ifdef F77_DUMMY_MAIN
> #  ifdef __cplusplus
>      extern "C"
> #  endif
>    int F77_DUMMY_MAIN() { return 1; }
> #endif
> int
> main ()
> {
> readline ();
>   ;
>   return 0;
> }
> configure:5837: gcc -o conftest -O2     conftest.c -ledit -lcrypt
> -lresolv -lnsl -ldl -lm -lbsd  >&5
> /usr/bin/ld: cannot find -ledit
> collect2: ld returned 1 exit status
> configure:5840: $? = 1
> configure: failed program was:
> #line 5811 "configure"
> #include "confdefs.h"
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: readline missing on linux?

От
Tom Lane
Дата:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> It appears your readline needs -ltermcap, -lterminfo, or -lcurses to
> link properly.  I think this happens when the readline library is not
> linked against those when it is created.

On Red Hat 8.0, readline depends on -ltermcap.  I would imagine the same
is true on RH9, but haven't got it installed personally.

If you don't have termcap (and possibly termcap-devel, not sure if
that's needed) then configure should detect the missing dependency.
Maybe it did --- you didn't show us enough of config.log to see what
happened.

            regards, tom lane

Re: readline missing on linux?

От
Bruce Momjian
Дата:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Just a question --- if you link readline against -ltermcap when the
> > library is created, you don't need to add -ltermcap when you link apps
> > to readline, right?  You somehow bind the dependency in to the shared
> > library, right?
>
> It could be done that way, but apparently is not on many platforms.
> What configure is testing for is to see whether "-lreadline" links
> successfully without a following "-ltermcap".  It doesn't.

Yes, that's what I thought.  Someone submitted a patch to add -lm to
ecpglib because it seems it needs it now and we don't want all the apps
to have to link it in.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: readline missing on linux?

От
Tom Lane
Дата:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Just a question --- if you link readline against -ltermcap when the
> library is created, you don't need to add -ltermcap when you link apps
> to readline, right?  You somehow bind the dependency in to the shared
> library, right?

It could be done that way, but apparently is not on many platforms.
What configure is testing for is to see whether "-lreadline" links
successfully without a following "-ltermcap".  It doesn't.

            regards, tom lane

Re: readline missing on linux?

От
Bruce Momjian
Дата:
Just a question --- if you link readline against -ltermcap when the
library is created, you don't need to add -ltermcap when you link apps
to readline, right?  You somehow bind the dependency in to the shared
library, right?

---------------------------------------------------------------------------

Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > It appears your readline needs -ltermcap, -lterminfo, or -lcurses to
> > link properly.  I think this happens when the readline library is not
> > linked against those when it is created.
>
> On Red Hat 8.0, readline depends on -ltermcap.  I would imagine the same
> is true on RH9, but haven't got it installed personally.
>
> If you don't have termcap (and possibly termcap-devel, not sure if
> that's needed) then configure should detect the missing dependency.
> Maybe it did --- you didn't show us enough of config.log to see what
> happened.
>
>             regards, tom lane
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: readline missing on linux?

От
dalgoda@ix.netcom.com (Mike Castle)
Дата:
In article <28362.1060363698@sss.pgh.pa.us>,
Tom Lane  <tgl@sss.pgh.pa.us> wrote:
>Bruce Momjian <pgman@candle.pha.pa.us> writes:
>> Just a question --- if you link readline against -ltermcap when the
>> library is created, you don't need to add -ltermcap when you link apps
>> to readline, right?  You somehow bind the dependency in to the shared
>> library, right?
>
>It could be done that way, but apparently is not on many platforms.
>What configure is testing for is to see whether "-lreadline" links
>successfully without a following "-ltermcap".  It doesn't.


You also then create a difference between static and dynamic linking which
a lot of people, such as myself, hate.

-lreadline for dynamic linking but
-lreadline -ltermcap for static linking?

No thanks; I'd rather have consistency.

mrc
--
     Mike Castle      dalgoda@ix.netcom.com      www.netcom.com/~dalgoda/
    We are all of us living in the shadow of Manhattan.  -- Watchmen
fatal ("You are in a maze of twisty compiler features, all different"); -- gcc