Обсуждение: 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