/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
undefined reference to `dlopen'
Fra : Kim Emax


Dato : 22-12-05 12:47

Hej

Jeg er ved at compile courier-imap på en RH9, det spiller på den ene
server, men jeg er rendt ind i en fejl på den næste:

make[2]: Entering directory `/home/emax/courier-imap-3.0.8/tcpd'
Compiling tcpdaccess.c
gcc -I./.. -I.. -Wall -g -O2 -o couriertcpd argparse.o tcpd.o
tcpdaccess.o tcpremoteinfo.o libspipe.a ../rfc1035/lib
rfc1035.a ../gdbmobj/libgdbmobj.a ../liblock/liblock.a
.../numlib/libnumlib.a ../waitlib/libwaitlib.a ../md5/libmd5.a ../
random128/librandom128.a ../soxwrap/libsoxwrap.a `cat
.../soxwrap/soxlibs.dep` -lgdbm
gcc -I./.. -I.. -Wall -g -O2 -o couriertls starttls.o argparse.o
libcouriertls.a libspipe.a ../rfc1035/librfc1035.a
.../md5/libmd5.a ../random128/librandom128.a ../numlib/libnumlib.a
.../liblock/liblock.a ../soxwrap/libsoxwrap.a `cat ../s
oxwrap/soxlibs.dep` `cat libcouriertls.dep`
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x35): In function
`dlfcn_load':
: undefined reference to `dlopen'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x95): In function
`dlfcn_load':
: undefined reference to `dlclose'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0xbc): In function
`dlfcn_load':
: undefined reference to `dlerror'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x147): In function
`dlfcn_bind_var':
: undefined reference to `dlsym'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x172): In function
`dlfcn_bind_var':
: undefined reference to `dlerror'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x237): In function
`dlfcn_bind_func':
: undefined reference to `dlsym'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x262): In function
`dlfcn_bind_func':
: undefined reference to `dlerror'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x51b): In function
`dlfcn_unload':
: undefined reference to `dlclose'
collect2: ld returned 1 exit status
make[2]: *** [couriertls] Error 1
make[2]: Leaving directory `/home/emax/courier-imap-3.0.8/tcpd'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/emax/courier-imap-3.0.8/tcpd'
make: *** [all-recursive] Error 1


libcrypto.a findes på begge, men har forskellig størrelse:
[root@serv020]# ls -al /usr/local/lib/libcrypto.a
-rw-r--r-- 1 root root 1687114 Mar 31 2005
/usr/local/lib/libcrypto.a

[emax@serv030]$ ls -al /usr/local/lib/libcrypto.a
-rw-r--r-- 1 root root 2027486 Oct 10 18:59
/usr/local/lib/libcrypto.a


Fra googling kan jeg se at der er stillet spørgsmål om indholdet af
ldconfig, det ser ens ud på begge servere:
[root@serv030] ldconfig -p | grep libdl
libdl.so.2 (libc6, OS ABI: Linux 2.2.5) => /lib/libdl.so.2
libdl.so (libc6, OS ABI: Linux 2.2.5) => /usr/lib/libdl.so


Selv mistænker jeg openSSL, som er nyeste version (0.9.8) på den
problematiske server, mens det er 0.9.7f på den, der fungerer (begge
installeret med make, ikke rpm), de linker i begge tilfælde til 0.9.7
version


// ens for begge servere
[root@serv030] locate libssl.so
/usr/local/libexec/libssl.so
/lib/libssl.so.4
/lib/libssl.so.0.9.7a
/data/apache_1.3.34/src/modules/ssl/libssl.so

[root@serv030]# locate libcrypto.so
/lib/libcrypto.so.4
/lib/libcrypto.so.0.9.7a


Nogen, der har en ide til, hvordan dette løses?

--
Kim Emax

 
 
Michael Rasmussen (22-12-2005)
Kommentar
Fra : Michael Rasmussen


Dato : 22-12-05 13:01

On Thu, 22 Dec 2005 12:47:28 +0100, Kim Emax wrote:

>
> Nogen, der har en ide til, hvordan dette løses?
Mangler du ikke denne option til gcc: -ldl
--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


Kim Emax (22-12-2005)
Kommentar
Fra : Kim Emax


Dato : 22-12-05 18:50

Michael Rasmussen wrote:
> On Thu, 22 Dec 2005 12:47:28 +0100, Kim Emax wrote:
>
>
>>Nogen, der har en ide til, hvordan dette løses?
>
> Mangler du ikke denne option til gcc: -ldl

Hvordan finder jeg ud af det? jeg kan se at jeg ikke har installeret
gcc-g77* på den nye server, men lige nu går rpm bare i stå, når jeg
prøver at installere eller forespørge, selv rpmdb --rebuild dør?

--
Kim Emax

Kent Friis (22-12-2005)
Kommentar
Fra : Kent Friis


Dato : 22-12-05 19:06

Den Thu, 22 Dec 2005 18:50:26 +0100 skrev Kim Emax:
> Michael Rasmussen wrote:
>> On Thu, 22 Dec 2005 12:47:28 +0100, Kim Emax wrote:
>>
>>
>>>Nogen, der har en ide til, hvordan dette løses?
>>
>> Mangler du ikke denne option til gcc: -ldl
>
> Hvordan finder jeg ud af det?

Det er deri dlopen, dlclose m.fl. ligger, så hvis ikke du har den
på, så mangler du den.

> jeg kan se at jeg ikke har installeret
> gcc-g77* på den nye server,

Hvad vil du også med en Fortran-compiler?

Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.

Michael Rasmussen (22-12-2005)
Kommentar
Fra : Michael Rasmussen


Dato : 22-12-05 19:11

On Thu, 22 Dec 2005 18:50:26 +0100, Kim Emax wrote:

>
> Hvordan finder jeg ud af det?
Det var til oversættelsen af applikationen, jeg tænkte på. I din
Makefile skal du tilføje -ldl til LDFLAGS

> jeg kan se at jeg ikke har installeret gcc-g77* på den nye server, men
> lige nu går rpm bare i stå, når jeg prøver at installere eller
> forespørge, selv rpmdb --rebuild dør?
gcc-g77 er GNU's version af Fortran77. Jeg tror næppe, det har nogen
indflydelse på dine problemer med rpm og rpmdb. Har du prøvet at
geninstallere rpm?

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


Kim Emax (23-12-2005)
Kommentar
Fra : Kim Emax


Dato : 23-12-05 17:36

Michael Rasmussen wrote:
> On Thu, 22 Dec 2005 18:50:26 +0100, Kim Emax wrote:

> Det var til oversættelsen af applikationen, jeg tænkte på. I din
> Makefile skal du tilføje -ldl til LDFLAGS

hvorledes gøres dette? Jeg har googlet efter det og fandt nogle steder,
hvor man satte env:

setenv LDFLAGS "-ldl"

Men her får jeg blot "-bash: setenv: command not found"

Andre match viste en path

LDFLAGS="-L/usr/local/lib64 -L/usr/X11R6/lib64"

Men jeg aner ikke, hvad ldl er, så det er lidt svært at gennemskue, hvad
jeg skal pege LDFLAGS i retning af...

> gcc-g77 er GNU's version af Fortran77. Jeg tror næppe, det har nogen
> indflydelse på dine problemer med rpm og rpmdb. Har du prøvet at
> geninstallere rpm?

Det tror jeg nu heller ikke, jeg så blot at det var en forskel mellem de
to servere, så inden jeg spurgte ville jeg sikre mig at det ikke _var_
problemet. De er afinstalleret igen nu.

RPM problemet er noget sekundært, det må jeg tage senere. Det, der
irriterer mig er at en reboot afhjælper problemet, men det er ikke en
windåse jeg bruger, så det er jo ikke løsning

--
Kim Emax

Michael Rasmussen (23-12-2005)
Kommentar
Fra : Michael Rasmussen


Dato : 23-12-05 18:28

On Fri, 23 Dec 2005 17:35:37 +0100, Kim Emax wrote:

>
> hvorledes gøres dette? Jeg har googlet efter det og fandt nogle steder,
> hvor man satte env:
>
> setenv LDFLAGS "-ldl"
>
> Men her får jeg blot "-bash: setenv: command not found"
>
Det gøres på ovenstående måde, hvis du benytter csh eller ksh.

> Andre match viste en path
>
> LDFLAGS="-L/usr/local/lib64 -L/usr/X11R6/lib64"
>
> Men jeg aner ikke, hvad ldl er, så det er lidt svært at gennemskue,
> hvad jeg skal pege LDFLAGS i retning af...
Åben Makefile og find variablen i filen. Når du har lokaliseret den,
tilføjer du blot -dl i slutningen af linjen.

-ldl betyder, link biblioteket dl med til det eksekverbare program. dl =
dynamisk link.

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


Kim Emax (24-12-2005)
Kommentar
Fra : Kim Emax


Dato : 24-12-05 11:52

Michael Rasmussen wrote:

> Det gøres på ovenstående måde, hvis du benytter csh eller ksh.

og jeg bruger bash, ok.


> Åben Makefile og find variablen i filen. Når du har lokaliseret den,
> tilføjer du blot -dl i slutningen af linjen.

Det hjalp desværre ikke:

I Makefile tilføjer jeg -dl, så der står:
LDFLAGS = -dl

/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x35): In function
`dlfcn_load':
: undefined reference to `dlopen'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x95): In function
`dlfcn_load':
: undefined reference to `dlclose'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0xbc): In function
`dlfcn_load':
: undefined reference to `dlerror'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x147): In function
`dlfcn_bind_var':
: undefined reference to `dlsym'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x172): In function
`dlfcn_bind_var':
: undefined reference to `dlerror'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x237): In function
`dlfcn_bind_func':
: undefined reference to `dlsym'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x262): In function
`dlfcn_bind_func':
: undefined reference to `dlerror'
/usr/local/lib/libcrypto.a(dso_dlfcn.o)(.text+0x51b): In function
`dlfcn_unload':
: undefined reference to `dlclose'
collect2: ld returned 1 exit status
make[2]: *** [couriertls] Error 1
make[2]: Leaving directory `/home/emax/courier-imap-3.0.8/tcpd'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/emax/courier-imap-3.0.8/tcpd'
make: *** [all-recursive] Error 1

Jeg mistænker stadig openssl for at være problemet, så jeg installerede
0.9.7i i stedet og så gled den ubesværet igennem.

> -ldl betyder, link biblioteket dl med til det eksekverbare program. dl =
> dynamisk link.

Tak for uddybningen, rart at blive lidt klogere.

--
Kim Emax

Michael Rasmussen (24-12-2005)
Kommentar
Fra : Michael Rasmussen


Dato : 24-12-05 11:57

On Sat, 24 Dec 2005 11:51:56 +0100, Kim Emax wrote:

>
> Det hjalp desværre ikke:
>
> I Makefile tilføjer jeg -dl, så der står: LDFLAGS = -dl
>
Og det sted hvor gcc bliver kaldt, er variablen LDFLAGS også tilføjet?
gcc $(LDFLAGS) ....

>
> Jeg mistænker stadig openssl for at være problemet, så jeg installerede
> 0.9.7i i stedet og så gled den ubesværet igennem.
>
Lyder mærkeligt.

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


Kim Emax (25-12-2005)
Kommentar
Fra : Kim Emax


Dato : 25-12-05 02:26

Michael Rasmussen wrote:

> Og det sted hvor gcc bliver kaldt, er variablen LDFLAGS også tilføjet?
> gcc $(LDFLAGS) ....

Der er flere steder:

ac_ct_CC = gcc
CC = gcc
CCDEPMODE = depmode=gcc3

Var det nogle af dem, du havde i tankerne?

>>Jeg mistænker stadig openssl for at være problemet, så jeg installerede
>>0.9.7i i stedet og så gled den ubesværet igennem.
>>
>
> Lyder mærkeligt.

Well, der må være en forskel i funktionerne i 0.9.7 og 0.9.8 (7i kom få
dage efter .8, så måske er der bugs i den version?)

Glædelig jul btw

--
Kim Emax

Kent Friis (02-01-2006)
Kommentar
Fra : Kent Friis


Dato : 02-01-06 00:16

Den Sat, 24 Dec 2005 11:51:56 +0100 skrev Kim Emax:
> Michael Rasmussen wrote:
>
>> Det gøres på ovenstående måde, hvis du benytter csh eller ksh.
>
> og jeg bruger bash, ok.
>
>> Åben Makefile og find variablen i filen. Når du har lokaliseret den,
>> tilføjer du blot -dl i slutningen af linjen.
>
> Det hjalp desværre ikke:
>
> I Makefile tilføjer jeg -dl, så der står:
> LDFLAGS = -dl
>
>> -ldl betyder, link biblioteket dl med til det eksekverbare program. dl =
>> dynamisk link.
>
> Tak for uddybningen, rart at blive lidt klogere.

Jeg tror dit problem skyldes en simpel tastefejl (hos Michael). Læg
mærke til der i øverste del står -dl, og længere nede -ldl.

Det er -ldl der er korrekt.

Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408927
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste