Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » undefined reference

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 < [ 2 ]
000
06.02.2004, 13:20 Uhr
Belisar



Hallo,
ich arbeite mich gerade durch ein Tutorial und wenn ich das Beispielprogramm dieses Tutorials compilieren will, erhalte ich folgende Fehlermeldung:


Code:
/home/johannes/CAN-CARD/programme/programm1/programm1/main.c:150: undefined reference to `can_device_init_struct'



und in der Zeile 150 steht folgender Code


C++:
    can_device_init_struct (&devInfo);



Woran kann das liegen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.02.2004, 13:21 Uhr
(un)wissender
Niveauwart


Mit der Lib musst du linken...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.02.2004, 13:25 Uhr
Belisar



Was genau heisst das?
header files einbinden nicht, oder? Wie link ich denn mit einer lib?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.02.2004, 13:30 Uhr
typecast
aka loddab
(Operator)


Das machst du mit der Option -l. Wenn du eine Lib die z.B. libblabla.so hast, dann geht das mit

Code:
$ gcc -lblabla main.c



Befindet sich die Datei nicht in deinem Libraypfad, dann musst du mit

Code:
$ gcc -L/pfad/zu/den/libs -lblabla main.c


dem Compiler sagen, wo er suchen soll.
ich gehe natürlich mal davon aus, dass du den gcc benutzt
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.02.2004, 13:32 Uhr
Belisar



Jop, habe ich...
Probiere es mal asu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.02.2004, 13:42 Uhr
Belisar



So weit so gut, erster fehler behoben, aber jetzt bekomm ich statt dessen


Code:
gmake[3]: *** Keine Regel vorhanden, um das Target »libcop.a«,
benötigt von »programm1«, zu erstellen. Schluss.



ausgegeben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.02.2004, 14:34 Uhr
typecast
aka loddab
(Operator)


So ich verschieb das mal in die Linux-Ecke
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.02.2004, 14:35 Uhr
typecast
aka loddab
(Operator)


Poste mal das Makefile
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.02.2004, 16:13 Uhr
Belisar



Hi, obwohl die Libaries in dem Verzeichnis liegen, daß ich mit -L dem Compiler/Linker mitteile, erhalte ich immer diese NAchricht:


Code:
/bin/sh ../libtool --silent --mode=link gcc -O2 -I /home/johannes/CAN-CARD/dpm/h -I /home/johannes/CAN-CARD/dpm/h/linux -I /home/johannes/CAN-CARD/dpm/ican/canopen/h -I /home/johannes/CAN-CARD/dpm/ican/mitop/h -I /home/johannes/CAN-CARD/dpm/ican/linux/h -O0 -g3 -Wall -o programm1 main.o -L/home/johannes/CAN-CARD/dpm/ican/linux/c-lib -llibcan.a -llibmitop.a -llibcop.a
/usr/lib/gcc-lib/i586-suse-linux/3.3.1/../../../../i586-suse-linux/bin/ld: cannot find -llibcan.a
collect2: ld returned 1 exit status
gmake[3]: *** [programm1] Fehler 1




Erhalte die Fehlermeldung auch, wenn ich den Compiler von hand aufrufe, also


Code:
gcc -L/home/johannes/CAN-CARD/dpm/ican/linux/c-lib -llibcan.a -llibmitop.a -llibcop.a -I /home/johannes/CAN-CARD/dpm/h -I /home/johannes/CAN-CARD/dpm/h/linux -I /home/johannes/CAN-CARD/dpm/ican/canopen/h -I  /home/johannes/CAN-CARD/dpm/ican/mitop/h -I /home/johannes/CAN-CARD/dpm/ican/linux/h main.c



Dann kommt auch


Code:
/usr/lib/gcc-lib/i586-suse-linux/3.3.1/../../../../i586-suse-linux/bin/ld: cannot find -llibcan.a
collect2: ld returned 1 exit status



Makefile kann ich hier nicht posten, da sie zu lang ist.

Der Fehler von vorhin mit dem gmake und keine Regel kam glaube ich auch daher, daß ich
-l libcan.a und nicht -llibcan.a geschrieben hab.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
06.02.2004, 16:18 Uhr
typecast
aka loddab
(Operator)


Ähm wenn die Datei libcan.a heißt dann heißt die dazugehörige Compileroption

Code:
$ gcc ... -lcan ...


--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: