compile mit gcc

Gast #5422254
Lesenswert?

Moin!
Ich bin gerade dabei ein Programm zu kompilieren mit gcc (auf Linux). 
Leider funktioniert das nicht, wie ich es gerne hätte, da immer folgende 
Fehlermeldung auftaucht:
1
helloworld.c:(.text+0x108): undefined reference to 'XGpio_DiscreteWrite'

Jetzt habe ich ein bisschen geforscht und bin darauf gestoßen, dass ich 
einerseits die c-Files mitkompilieren muss.

Jetzt habe ich alle nötigen c-Files und Headers in einen Ordner gepackt 
und versucht das ganze zu kompilieren mit:
1
gcc helloworld.c platform.c [alle weiteren genutzten c-Files] -o helloworld_o

Problem, dass er jetzt irgendwelche Errors von invaliden Instruktionen 
in einem File ausspuckt. Wobei das ist ein Musterfile, ohne Probleme 
eigentlich.
Wenn ich den shell-Command:
1
make helloworld
nutze, kommt die Fehlermeldung von oben, wobei ich die nötigen Files 
eingebunden habe.

Da ich noch ein totaler Anfänger diesbezüglich bin, wäre ich um einen 
Tipp froh, wo mein Fehler liegt!

Merci beaucoup!
#5422304
Lesenswert?

Für mich sieht das so aus als wolltest du ein bare metal xilinx example 
für linux compilieren. Das geht natürlich so nicht. Du müsstest unter 
Linux erstmal deinen xilinx gpio Treiber (Modul) laden und dann über das 
gpio Interface mit read bzw write zugreifen.
Siehe http://www.wiki.xilinx.com/Linux+GPIO+Driver

Bzw. du könntest theoretisch natürlich auch dein GPIO via mmap in den 
Userspace mappen und dann selbst in den Registern rumfummeln, was 
natürlich nicht unbedingt die schönste art ist.
Gast #5422331
Lesenswert?

Frank M. schrieb:
> Durch Deinen Vorschlag bekommt der TO seine Fehlermeldungen aber nicht
> weg.

Wenn er den Hinweis bzgl. der Libraries beachtet und kein Source-File 
vergisst, schon, denn danach riecht die Linker-Fehlermeldung.

Die Aufteilung erhöht natürlich nur die Übersichtlichkeit und macht es 
leichter, daraus ein funktionierendes Makefile zu bauen.
Gast #5422473
Lesenswert?

undefined reference to 'xxx'
kennt man, wenn man länger mit C programmiert. Da weiss man dann, das 
irgendwelche Symbole nicht mitgelinkt werden.

Anscheinend hast du so etwas noch nie gemacht, dann würde ich mal sagen, 
du solltest ein paar Stufen einfacher einsteigen. Besorg dir am besten 
ein C Lehrbuch und fang ganz von vorne an. Zuerst mit 10-Zeilern in 
einer einzigen Datei.
#5422728
Lesenswert?

Und wie bereits in meiner ersten Antwort geschrieben, ist 
XGpio_DiscreteWrite immer noch eine Funktion aus dem Xilinx SDK welche 
nur für Bare-Metal gedacht ist. Der TO versucht ein Bare-Metal Example 
für Linux zu kompilieren, was so natürlich nicht funktioniert weil man 
als Linux-Applikation erstmal keinen direkten Zugriff (ohne mmap) auf 
die physikalische Speicher-Adresse hat, da hilft es auch nicht die Lib 
zu kompilieren und dazu zulinken (auch wenn der Fehler dann 
möglicherweise weg ist, ist die Funktion erstmal nicht gegeben)
Gast #5422829
Lesenswert?

Vielen Dank für die vielen Antworten!
Ich muss an dieser Stelle Timmo H. rechtgeben

Timmo H. schrieb:
> Für mich sieht das so aus als wolltest du ein bare metal xilinx example
> für linux compilieren

Ich werde mal den Linuxtreiber laden und hoffentlich so weiterkommen!

Vielen Dank trotzdem für jede Zeile Hilfe!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren