gcc problem/unklarheit: link libs/pfade

OP #4010229
Lesenswert?
• ▲
▼
Ich hab folgendes Problem:

Ich baue ein executable mit dem gcc (genauer dem 
arm-linux-gnueabihf-gcc) unter linux.

ich muss, um das fertige Executable zu bekommen ein paar libs 
dazulinken.

Das scheint solange zu funktionieren, solange sie Namen im Format 
"libNAME.a"
Einige heißen aber anders und der dumme gcc findet sie nur, wenn ich sie 
mit ihrem vollen Pfad ohne '-l' wie ein normales objectfile übergebe. Er 
sucht scheinbar nicht in den -L-Pfaden

Frage 1: kann ich das irgendwie umgehen?
Frage 2: Gibts einen anderen Unterschied, wie die intern vom Linker 
behandelt werden, (also objectfile vs. -l)?


viele Grüß aus Berlin
Moderator Persönliche Seite #4010249
Lesenswert?
• ▲
▼
Vlad Tepesch schrieb:

> Einige heißen aber anders und der dumme gcc findet sie nur, wenn ich sie
> mit ihrem vollen Pfad ohne '-l' wie ein normales objectfile übergebe. Er
> sucht scheinbar nicht in den -L-Pfaden

„Hajo, so isch des.“

„-lfoo“ heißt: „Suche in den durch -L vorgegeben Pfaden, danach in den
eingebauten Pfaden nach einer Bibliothek namens libfoo.a.“

> Frage 1: kann ich das irgendwie umgehen?

Hast du ja schon: auf der Kommandozeile komplett angeben.

> Frage 2: Gibts einen anderen Unterschied, wie die intern vom Linker
> behandelt werden, (also objectfile vs. -l)?

Es gibt Unterschiede in der Behandlung zwischen Objektdatei und
Bibliothek (Objektdateien werden immer gelinkt, aus Bibliotheken
werden nur die Module gelinkt, die dazu beitragen, an dieser Stelle
ein bislang undefiniertes Symbol aufzulösen), aber es gibt keinen
Unterschied, ob die Bibliothek mittels -l/-L gesucht worden ist oder
direkt in der Kommandozeile angegeben ist.
#4010847
Lesenswert?
• ▲
▼
Ich verstehe außerdem nicht, warum die unbedingt einen anderen Namen 
haben muss. Was ist denn an der Endung auf .a so schlimm? Der Compiler 
fordert auch, daß ohne explizite Angabe der Sprache per 
Kommandozeilenparameter der Name einer C-Datei auf .c endet.
Oder anders: Die Option -l bietet einen gewissen Automatismus. Dafür 
gibt es bestimmte Vorgaben an den Namen. Wenn du die nicht einhalten 
willst, musst du eben die Variante ohne Automatismus nehmen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.