Hallo, ich habe beim compilieren meines Programms (in Eclipse) folgendes Problem: arm-angstrom-linux-gnueabi-gcc test_main.o test_data.o test_capi.o test.o MW_csl.o -otest -lm -lrt -lrt -lpthread test_main.o: In function `main': /home/gertitschke/workspace/test/CustomMW/../../../test_eclipseide/test_ main.c:58: undefined reference to `xilInit' /home/gertitschke/workspace/test/CustomMW/../../../test_eclipseide/test_ main.c:63: undefined reference to `xilRun' Die Funktionen die nicht gefunden werden sind in der pil_interface_lib.h und von da aus die referenz auf die xil_interface_lib.h wo die nicht gefunden Funktionen xilInit und xilRun enthalten sind. Meiner Meinung nach habe ich die Dateien aber korrekt eingebunden, sodass dieser die gesuchten Dateien finden sollte. (siehe Bild). Kann es sein das diese Dateien direkt in das Projekt eingebunden sein müssen, damit diese mit compiliert werden? Vielen Dank im Voraus! Bjarne
Bjarne G. schrieb: > ich habe beim compilieren meines Programms (in Eclipse) folgendes > Problem: Nein, hast du nicht :-) Du hast kein Problem beim Compilieren sondern eines beim Linken! > arm-angstrom-linux-gnueabi-gcc test_main.o test_data.o test_capi.o > test.o MW_csl.o -otest -lm -lrt -lrt -lpthread > test_main.o: In function `main': > /home/gertitschke/workspace/test/CustomMW/../../../test_eclipseide/test_ main.c:58: > undefined reference to `xilInit' > /home/gertitschke/workspace/test/CustomMW/../../../test_eclipseide/test_ main.c:63: > undefined reference to `xilRun' > Die Funktionen die nicht gefunden werden sind in der pil_interface_lib.h > und von da aus die referenz auf die xil_interface_lib.h wo die nicht > gefunden Funktionen xilInit und xilRun enthalten sind. In den Headern sind grundsätzlich keine Funktionen enthalten, sondern nur deren Prototypen. Da du hier aber einen Linkerfehler bekommst - und ja, zwecks größtmöglicher Verwirrung wird ebenfalls mit 'gcc' gelinkt... - fehlt die Bibliothek, in der die Funktionen enthalten sind. > Meiner Meinung nach habe ich die Dateien aber korrekt eingebunden, > sodass dieser die gesuchten Dateien finden sollte. (siehe Bild). Hast du und tut er, ansonsten hätte sich bereits der Compiler beschwert von wegen Default-Prototypen und so. > Kann es sein das diese Dateien direkt in das Projekt eingebunden sein > müssen, damit diese mit compiliert werden? Ja, aber nicht die Header, sondern die Bibliothek. Du linkst ja (möglicherweise unbewusst) schon gegen pthread, gegen rt und gegen die Mathebibliothek (-lpthread, -lrt und -lm). Nun müsstest du noch gegen diejenige Bibliothek linken, zu der 'xilInit' usw. gehören.
Vielen Dank für deine Antwort. Ich sehe das Problem genauso wie du. Leider gibt es meiner Meinung nach aber einfach keine Bibliothek dafür. Ich habe nur die Files zur Verfügung die mir Matlab Simulink Embedded Coder in dem Inlude-Pfad den ich eingebunden habe zur Verfügung stellt. Es gibt dafür leider kein Library-File. Die gesuchten Funktionen sind auch definitiv in den Files definiert,dies weiß ich, da ich mittlerweile alle durchgeschaut habe. Ich kann diese Files auch leider nicht selber zu einer Library Compilieren, da die Files noch weitaus mehr Files brauchen, die sich wahrscheinlich dann auf ganz Matlab beziehen(sehr sehr viele Dateien :-D ). Ich habe mittlerweile den Support von Matlab kontaktiert und werde mal schauen ob die mir bei meinem Problem helfen können. Villeicht sollte ich auch einfach mal mein Problem schildern. :-D Ich möchte ein Simulink Modell laufen lassen welches dann auf einem Board (embedded Linux) laufen soll. Dies soll jedoch im PIL-Mode (processor in the loop) stattfinden. D.h. das die Daten die das Board ausließt bzw. berechnet, direkt wieder in einem Messfenster in Simulink angezeigt werden sollen. Das ist zumindest das Problem kurz und knackig :-D
Bjarne G. schrieb: > Es gibt dafür leider kein Library-File. Dann muss es eine Objektdatei dafür geben. Irgendwo muss der Objektcode für die funktionen ja herkommen. > Die gesuchten Funktionen sind auch definitiv in den Files definiert,dies > weiß ich, da ich mittlerweile alle durchgeschaut habe. Ich bezweifle nach wie vor sehr stark, dass die Funktionen in den Headern definiert sind. Gibt es denn zu den Headern noch Quellen? > Ich möchte ein Simulink Modell (...) > Das ist zumindest das Problem kurz und knackig :-D Joa, da kann ich dir aber nicht mit helfen. Ich fand und finde Matlab zum Kotzen. Und ich bin immer wieder erstaunt und erschüttert, wie sich so ein Frickelmist so sehr durchgesetzt hat. Mehr dazu in http://www.parallelnetz.de/ScriptingHater.html ...
Ja es gibt C-Dateien zu den header Dateien und dort sind die Funktionen deklariert. Ich weiß nur leider nicht warum diese dann nicht mit erkannt werden. Hab auch schon versucht einfach alle Dateien aus dem Verzeichnis direkt in der C-Datei zu includen. Da war dann das linker Problem auch gelöst...jedoch kamen dann tausende Fehler beim Compilieren (nicht beim Linken! :-)). Naja ich warte mal ab was mir der Support von Matlab sagt ;-) Mir geht es mit Matlab genau so wie dir. Ich find es auch zum kotzen. Aber wir du schon sagst es hat sich leider durchgesetzt. Warum weiß ich auch nicht. Nervt einfach nur... Vielen Dank nochmal für deine Unterstützung ;)
Bjarne.G schrieb: > Ja es gibt C-Dateien zu den header Dateien und dort sind die Funktionen > deklariert. Du wirfst die Begriffe Definition und Deklaration durcheinander. Ein Protoyp ist eine Deklaration. Die IMplementierung ist eine Definition (Kurz gesagt: eine Deklaration sagt "Das gibt es und so sieht es aus der Ferne aus". Eine Definition hingegen zeigt die Details. Anders ausgedrückt: Eine Deklaration ist eine Anweisung an den Compiler zur Kenntnis zu nehmen, das etwas irgendwo existiert. Für eine Definition muss der COMpiler aber etwas tun, damit das dann auch im fertigen Programm auftaucht.) Ok. Du hast also die Deklarationen im Header File Und du hast ein C-File, in dem die Definitionen dazu drinnen sind. Na, dann. Das C-File mit ins Projekt aufnehmen, compilieren, dazulinken und fertig ist die Schose.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
