Обсуждение: readline missing on linux?
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"
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
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
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
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
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
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