Anfängerprobleme GCC-Linker CrossCompilation für ARM

#3327141
Lesenswert?

Hallo,
beschäftige mich gerade mit dem Einrichten eines ARM-Linux Boards TX28S 
von Karo Electronics, das mit vorinstalliertem Linux kommt. Eine 
Toolchain zum Cross-Compilieren ist auch dabei und funktioniert auf dem 
Host auch wunderbar mit Programmen die keine besonderen Header Dateien 
brauchen.

Bin Anfänger mit GCC und jetzt etwas ratlos denn das selbstgeschriebene 
Programm, das ich da drauf machen will benutzt sqlite3 und so krieg ich 
da jetzt logischerweise eine Fehlermeldung dass er die Headerdatei nicht 
findet.
Wenn ich sie mit –Isqlite-amalgamation-3080002 dazu linke wird trotzdem 
angezeigt, dass er die die Funktionen sqlite3_close, sqlite3_exec usw. 
nicht findet. Was muss ich noch an Optionen eingeben? Compilerzeile ist: 
arm-926ejs-linux-gnueabi-gcc –o executable eingabedatei.c 
–Isqlite-amalgamation-3080002(da liegt der sqlite quellcode und die 
headerdatei) –L/usr/local/arm/sqhier/lib(ordner mit den libraries 
libsqlite3.a/.la/.so)

Bin vor allem verwirrt wegen der verschiedenen Dateien: Was machen die 
Header-Dateien (sqlite3.h) im Ordner include? Brauche ich noch die 
Librarydateien (libsqlite3.a/.la/.so) im Ordner lib auf dem Target? Und 
dann ist da noch die sqlite3 Binary im Ordner bin.
Hieran hab ich mich orientiert: 
http://openbook.galileocomputing.de/linux/linux_kap30_001.html#dodtp8105013f-285a-4f07-b741-29139de1bde8

Ist wahrscheinlich so verdammt einfach, dass es nirgends steht aber ich 
verzweifel trotzdem dran -.-   wie muss meine compilerzeile aussehen?
Danke für eure Hilfe
LG
#3327165
Lesenswert?

ändert leider nichts, bekomme immernoch den den gleichen Fehler 
undefined reference to 'sqlite3_close' usw.

Auf dem Zielsystem ist sqlite3 installiert, aber auf dem Host wo ich die 
Kompilierung ausführe nicht. Und selbst wenn, dann wäre es ja für eine 
andere Prozessorarchitektur?
#3327189
Lesenswert?

Das Cross-Compilierte sqlite liegt komplett im Ordner 
/usr/local/arm/sqhier mit den Unterordnern bin(enthält die ausführbare 
sqlite Datei), include(enthält sqlite3.h), lib(enthält die libraries) 
und share(ist nur die man drin). Das alles hab ich dann auf das Target 
kopiert. Hab auch versucht mit –L/usr/local/arm/sqhier/lib gegen die 
Libs in diesem Ordner zu linken.
Gast #3327213
Lesenswert?

Ich mache hier so etwas ähnliches, cross-compiliere mit Ziel ARM auf 
einem Intel-Linux.

Bei Linken muss ich dann den Pfad zu der ARM-Bibliothek mit angeben. 
Diese Bibliothek muss dabei auch physikalisch auf dem Intel-System 
liegen

Liegt also meine Bibliothek libxx.so unter /data/arm, dann muss ich 
angeben

arm-gcc .... -L/data/arm -lxx

Das hat bisher gut funktioniert.
#3327219
Lesenswert?

Hab sqlite auf dem Host Cross-Compiliert und in einen Ordner schmeißen 
lassen und den dann auf das Target kopiert.
Der Ordner liegt auch noch auf dem Host und zwar in 
/usr/local/arm/sqhier. Hab versucht dagegen zu linken. Das arm im Pfad 
ist etwas irreführend, aber das läuft alles auf dem Host ab, nur dass 
ich ausführbare Dateien für das ARM Target haben will, die ich dann 
später rüberkopieren will.

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