Suche nach Bibliotheksfunktionen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
weedy
Beiträge: 585
Registriert: 02.11.2002 21:47:49
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Suche nach Bibliotheksfunktionen

Beitrag von weedy » 29.04.2016 15:14:46

Hi,

angenommen ich habe den Quellcode einer Software und diese meldet beim Linken fehlende Funktionen. Wie finde ich am ehesten raus, welche Libs dazu gelinkt werden müssen?

Bislang gehe ich ueber den Weg include -> package -> lib, also per 'grep xyz -r /usr/include' suche ich in den includes, dann ermittle ich das package der include-Datei per 'dpkg -S /usr/include/...', und dann versuche ich in die im package enthaltenen Libs versuchsweise zu linken.

Aber da ist zu viel Raterei dabei.

Gibt es einen einfacheren Weg, sich die Libs anzeigen zu lassen, die eine bestimmte Funktion enthalten?

Gruß

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

Re: Suche nach Bibliotheksfunktionen

Beitrag von pferdefreund » 03.05.2016 06:30:33

man 3 funktionsname - und wenn die -dev-pakete installiert sind, sollte man die Manpage zur Funktion bekommen - und damit auch die zu includierende Header-Datei. Mit der kann man dann auf Paketsuche nach Datei gehen und schon hat man die Lib. Gibt ja bei Debian.org die Suche nach Paketinhalt bez. bei instaliertem -dev reicht auch ein dpkg -S deine.h.

Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

Re: Suche nach Bibliotheksfunktionen

Beitrag von ralli » 03.05.2016 08:30:30

Ich erinnere mich, das ldd die gelinkten Bibliotheken anzeigt.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
weedy
Beiträge: 585
Registriert: 02.11.2002 21:47:49
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Suche nach Bibliotheksfunktionen

Beitrag von weedy » 03.05.2016 11:42:46

ralli hat geschrieben:Ich erinnere mich, das ldd die gelinkten Bibliotheken anzeigt.
Ganz genau, doch dazu ist es notwendig, dass der Compiler auch den Linkvorgang ohne Probleme hingekriegt hat. Wenn ich jedoch Symbole sehe, die ld (vom compiler aufgerufen) nicht finden kann, dann interessiert mich, in welchen Libs die Symbole ggf. zu finden sind.

In diesem Fall nützt mir ldd recht wenig, wenn der Compiler nicht in der Lage war, ein executable zu generieren.

Gruß

Benutzeravatar
MSfree
Beiträge: 11605
Registriert: 25.09.2007 19:59:30

Re: Suche nach Bibliotheksfunktionen

Beitrag von MSfree » 03.05.2016 12:17:03

weedy hat geschrieben:In diesem Fall nützt mir ldd recht wenig, wenn der Compiler nicht in der Lage war, ein executable zu generieren.
Richtig, es gibt den befehl nm, den man z.B. nm /usr/lib64/libc.a aufrufen kann, um sich die Symbole von /usr/lib64/libc.a ausgeben zu lassen.

1. die Ausgabe ist etrem "laut"
2. um herauszufinden, welche Bibliothek, welches Symbol beinhaltet, mußt du das für jede infrage kommende Bibliothek machen, was noch mehr "Lautstärke" produziert.

3. am einfachsten ist <Funktionsname> unresolved bei google einzugeben.

Benutzeravatar
weedy
Beiträge: 585
Registriert: 02.11.2002 21:47:49
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Suche nach Bibliotheksfunktionen

Beitrag von weedy » 03.05.2016 13:38:54

MSfree hat geschrieben:
weedy hat geschrieben:In diesem Fall nützt mir ldd recht wenig, wenn der Compiler nicht in der Lage war, ein executable zu generieren.
Richtig, es gibt den befehl nm, den man z.B. nm /usr/lib64/libc.a aufrufen kann, um sich die Symbole von /usr/lib64/libc.a ausgeben zu lassen.

1. die Ausgabe ist etrem "laut"
2. um herauszufinden, welche Bibliothek, welches Symbol beinhaltet, mußt du das für jede infrage kommende Bibliothek machen, was noch mehr "Lautstärke" produziert.

3. am einfachsten ist <Funktionsname> unresolved bei google einzugeben.
Aber das ist eben nicht wirklich gut. Ich meine, es gibt ja Tools, wie z.b. locate. Vieleicht braucht man mal eine Art Desktopsuche, die auf Spezialattribute getuned ist. Ich hatte mal vor langer Zeit mit swish-e herumgedoktert, aber das ist Ding echt gefaehrlich und nicht ganz einfach zu warten.

Vieleicht finde ich ja noch eine ähnliche Suchlösung, die ich bequem für lib-Symbole aufpopeln kann. Es muss ja nichteinmal eine DB sein, in Files kann man ja auch schnell suchen mit den heutigen Kisten. Aber eine DB ist schon was tolles. Semantisch und so.

Gruß

Antworten