Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » seltsames Compiler-problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.01.2004, 12:00 Uhr
Cassandra_Komplex



Hallo zusammen!

Ich hoffe ich bin hier richtig, weiß selber nicht wie ich das Problem einordnen soll.
Ich habe ein C-Projekt unter Suse-Linux. Wenn ich das Projekt mit make kompilieren will, kommt folgende Fehlermeldung mit der ich nichts anfangen kann und auch Google fällt dazu nichts brauchbares ein:

Code:
suckert@linux:~/Projects/ShellIO> make clean all
Cleaning examples from: ./examples

Cleaning objects from: ./src

Cleaning dependency from: ./src

Building objects from: ./src/ShellIO.c
Building objects from: ./src/mainfunctions.c

Building examples from: ./examples/IO
/usr/lib/gcc-lib/i486-suse-linux/3.2/../../../../i486-suse-linux/bin/ld: cannot find -lBase
collect2: ld returned 1 exit status
make[1]: *** [IO] Fehler 1
make: *** [exe_examples] Fehler 2
suckert@linux:~/Projects/ShellIO> make clean all
Cleaning examples from: ./examples

Cleaning objects from: ./src

Cleaning dependency from: ./src

Building objects from: ./src/ShellIO.c
Building objects from: ./src/mainfunctions.c

Building examples from: ./examples/IO
/usr/lib/gcc-lib/i486-suse-linux/3.2/../../../../i486-suse-linux/bin/ld: cannot find -lBase
collect2: ld returned 1 exit status
make[1]: *** [IO] Fehler 1
make: *** [exe_examples] Fehler 2



Was hat das mit dem -lBase auf sich?
Dieser Pfad ist in keinem makevar-file eingebunden, deshalb frage ich mich, woher der Compiler das überhaupt nimmt.
Ich hab den Pfad nachgesehen, eine Datei namens ld existiert dort wirklich, aber was soll das mit dem -lBase??????????????????????????????????????????????????????????????

Ich hatte das Projekt vorher auf einem anderen Rechner laufen, unter Red Hat-Linux, da ist sowas nie aufgetreten. Jetzt versuche ich es auf diesem Rechner zum Laufen zu bringen und dann kommt diese Fehlermeldung. Ich hab alle Pfade zu den includes in den makevar-files schon angepasst, daran sollte es also nicht liegen.
Keine Ahnung, ich hoffe hier weiß jemand Bescheid. Unser Dozent ist jedenfalls ahnungslos, war ja klar...


Bearbeitung von loddab:

code-Tags gesetzt


Dieser Post wurde am 12.01.2004 um 14:16 Uhr von Loddab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.01.2004, 12:20 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ich kann dir mit makefiles auch nicht helfen...
aber bist du sicher das der compiler schuld ist?...
hast du mal einfach versucht das von hand zu kompilieren?...
oder ist dein projekt so gross das du 100 verschiedene Dateien in ebenso vielen verschiedenen verzeichnissen hast?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.01.2004, 12:24 Uhr
Cassandra_Komplex



Zum selber kompilieren ist das Projekt tatsächlich schon zu groß und unübersichtlich. Mittlerweile habe ich allerdings rausgefunden, daß das Problem nicht der Compiler, sondern der Linker ist. Der Linker ist nämlich ld, das Programm was unter dem Pfad in der Fehlermeldung zu finden ist.
Was komisch ist, wenn ich unter diesem Pfad nachsehe, ist ld da, als Verknüpfung, wenn ich es probeweise ausführen will, meckert Linux, daß das Programm nicht auffindbar ist.
Scheinbar fehlt also der Linker, wo krieg ich den her?
Oder hab ich da irgendwas falsch interpretiert?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.01.2004, 12:45 Uhr
virtual
Sexiest Bit alive
(Operator)


Stelle Sicher, daß beim Linken das Verzeichnis mit der Option -L angegeben ist, wo wahlweise libBase.so bzw. libBase.a zu finden ist: Der linker findet die Lib nämlich nicht.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.01.2004, 12:52 Uhr
Cassandra_Komplex



Das ist ja, was ich nicht verstehe, diese Verzeichnis ist nirgendwo angegeben, woher nimmt er das? Das Verzeichnis war noch nie angegeben und es lief immer, bis ich das System gewechselt habe.
Ich hab versucht es im makeVar-file im Projekt-Stamm-Verzeichnis einzubinden, das funktioniert nicht. Wenn ich es in dem Verzeichnis einbinde in dem die Dateien gelinkt werden nützt das auch nichts.
Außerdem liegt die Datei zwar im angegebenen Verzeichnis, läßt sich aber nicht ausführen weil sie angeblich nicht vorhanden ist, und zwar auch dann wenn ich den Verknüpfungen bis zum Original folge.
Irgendeine Idee dazu?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.01.2004, 12:56 Uhr
ao

(Operator)


Das Programm ld hat einen Exit-Status zurückgegeben, also ist es da, diese Zeile beweist es:

Code:
collect2: ld returned 1 exit status



Diese Zeile verrät, was schiefging:

Code:
/usr/lib/gcc-lib/i486-suse-linux/3.2/../../../../i486-suse-linux/bin/ld: cannot find -lBase


ld hat versucht, ein File namens libBase.a (oder libBase.so) einzubinden, und das hat nicht geklappt. Überprüfe, ob das File da ist (Groß/Kleinschreibung beachten!). Falls ja, sage ld (mit dem Parameter -L), in welchem Verzeichnis die Datei liegt. Dazu musst du das Makefile bearbeiten.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.01.2004, 14:32 Uhr
Pablo
Supertux
(Operator)


Vielleicht hast du diese Library gar nicht installiert. Gibt es kein configure Skript? Was tut das Programm? Mir sind -lbase auch gar nichts, ich kann mich nicht an eine bestimmte Library erinnern, die so heißt.

Du kannst mit -L, wie virtual schon sagte, gem gcc mitteilen, wo die .so oder .a Dateien sich befinden.


Code:
$ find / | grep libBase.o
$ find / | grep libBase.a


Vielleicht findest du die Dateien so.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.01.2004, 15:33 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
Pablo postete

Code:
$ find / | grep libBase.o
$ find / | grep libBase.a


Vielleicht findest du die Dateien so.


Code:
find / -name libBase.a -o -name libBase.so


Wolltest Du wohl sagen...
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: