[solved] Fehlende Symbole beim Linken gegen OpenSSL

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Thammi
Beiträge: 79
Registriert: 03.07.2005 17:53:46
Wohnort: Dresden
Kontaktdaten:

[solved] Fehlende Symbole beim Linken gegen OpenSSL

Beitrag von Thammi » 21.11.2013 03:25:11

Hi,
ich habe ein Problem beim Linken gegen OpenSSL auf einer meiner Maschinen: Es kommt zwar nicht der Fehler, dass die Bibliothek nicht gefunden werden könne, allerdings werden die entsprechenden Symbole trotzdem nicht aufgelöst. Eine andere Maschine zeigt dieses Verhalten nicht und kompilliert Porblemlos.

Ich habe ein kleines Testprogramm gebaut (NoPaste-Eintrag37468), das ich mit folgendem Aufruf kompilliere:

Code: Alles auswählen

g++ -o testme test.cpp -lssl
... was folgende Fehlermeldungen auf der betroffenen Maschine erzeugt:

Code: Alles auswählen

thammi@ladon /tmp> g++ -o testme test.cpp -lssl
/tmp/cc5MV8JJ.o:test.cpp:function base64(char const*, int): error: undefined reference to 'BIO_f_base64'
/tmp/cc5MV8JJ.o:test.cpp:function base64(char const*, int): error: undefined reference to 'BIO_new'
/tmp/cc5MV8JJ.o:test.cpp:function base64(char const*, int): error: undefined reference to 'BIO_s_mem'
/tmp/cc5MV8JJ.o:test.cpp:function base64(char const*, int): error: undefined reference to 'BIO_new'
/tmp/cc5MV8JJ.o:test.cpp:function base64(char const*, int): error: undefined reference to 'BIO_push'
/tmp/cc5MV8JJ.o:test.cpp:function base64(char const*, int): error: undefined reference to 'BIO_write'
/tmp/cc5MV8JJ.o:test.cpp:function base64(char const*, int): error: undefined reference to 'BIO_ctrl'
/tmp/cc5MV8JJ.o:test.cpp:function base64(char const*, int): error: undefined reference to 'BIO_ctrl'
/tmp/cc5MV8JJ.o:test.cpp:function base64(char const*, int): error: undefined reference to 'BIO_free_all'
collect2: error: ld returned 1 exit status
Die andere Maschine kompilliert wie gesagt problemlos und erzeugt ein funktionsfähiges Programm.

Beide Maschinen haben Debian Wheezy mit Pinning. libssl ist auf beiden Maschinen über das Paket libssl1.0.0:amd64 (1.0.1e-4) installiert.

Hat jemand so etwas schon mal gesehen und/oder kann mir helfen das Problem zu lokalisieren? Ich finde dazu irgendwie keinen Ansatz ...

So far, farewell
Thammi
Zuletzt geändert von Thammi am 21.11.2013 17:20:50, insgesamt 1-mal geändert.

pferdefreund
Beiträge: 3799
Registriert: 26.02.2009 14:35:56

Re: Fehlende Symbole beim Linken gegen OpenSSL

Beitrag von pferdefreund » 21.11.2013 08:09:21

Auf beiden auch die aktuellen -dev Pakete vorhanden ?

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: Fehlende Symbole beim Linken gegen OpenSSL

Beitrag von peschmae » 21.11.2013 08:44:50

Bei mir auf Sid geht das hier: g++ -o test test.c -lssl -lcrypto, dass ich noch libcrypto brauche hab ich einfach mal geraten aus dem Output von

Code: Alles auswählen

peschmae@sid:~> ldd /usr/lib/x86_64-linux-gnu/libssl.so
	linux-vdso.so.1 (0x00007fff715fe000)
	libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00002b4d566c2000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00002b4d56ab5000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00002b4d56cb9000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00002b4d56ed1000)
	/lib64/ld-linux-x86-64.so.2 (0x00002b4d5623f000)
Alternativ sagt einem das auch ein freundliches pkg-config:

Code: Alles auswählen

peschmae@sid:~> pkg-config --libs libssl
-lssl -lcrypto  
pferdefreund hat geschrieben:Auf beiden auch die aktuellen -dev Pakete vorhanden ?
Das ist aber nicht die Ursache, wenn er beim linken Probleme hat... - wenn die fehlen würden, würde er schon vorher schreien

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Thammi
Beiträge: 79
Registriert: 03.07.2005 17:53:46
Wohnort: Dresden
Kontaktdaten:

Re: Fehlende Symbole beim Linken gegen OpenSSL

Beitrag von Thammi » 21.11.2013 17:20:31

Danke, -lcrypto hat das Problem behoben.

pferdefreund
Beiträge: 3799
Registriert: 26.02.2009 14:35:56

Re: [solved] Fehlende Symbole beim Linken gegen OpenSSL

Beitrag von pferdefreund » 21.11.2013 19:27:41

Nicht unbedingt - wenn man die Doku hat, kann man sich nen Header auch selber schreiben - hab ich schon oft gemacht zu Zeiten, wo Plattenplatz knapp war und mit -dev auch noch zig MB an Doku mitkamen. Oft braucht man ja nur 2 - 5 Funktionen von 500 usw

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: [solved] Fehlende Symbole beim Linken gegen OpenSSL

Beitrag von peschmae » 21.11.2013 20:48:01

Ja, wenn du dir in den Fuss schiesst ist da nachher ein Loch ;)

Aber heutzutage macht sowas hoffentlich keiner mehr, das kann ja nur zu obskuren Fehlern führen. Wobei ich kenne da ein paar Spezialisten... :D

MfG Peschmä

P.S. okok, ich gebs ja zu, bei Lapack hab ich das auch schon mal gemacht :(
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Antworten