compiler probleme,

Mahon

Neuer User
Mitglied seit
6 Nov 2006
Beiträge
26
Punkte für Reaktionen
0
Punkte
0
hi zusammen,

bin noch im Lernprozess beim Compilieren also nicht gleich schimpfen mit mir ;) folgenden Code wollte ich unter Friboli im Toolchain vom ds-mod Compilieren. Nur zum Testen....
Code:
#include <stdio.h> 
#include <stdlib.h>
#include <mysql.h> 

int main ()  { 
   MYSQL *my;
	my = mysql_init(NULL);
	if(my == NULL) {
	   fprintf(stderr, "Fehler beim Initialisieren \n");
	   exit (EXIT_FAILURE);
	} else {
		printf("Initialisierung gelungen...");
	}
}

> mygcc (mipsel-linux-uclibc-gcc) connectTest.c
Code:
connectTest.c:9:20: error: mysql.h: No such file or directory
connectTest.c: In function 'main':
connectTest.c:12: error: 'MYSQL' undeclared (first use in this function)
connectTest.c:12: error: (Each undeclared identifier is reported only once
connectTest.c:12: error: for each function it appears in.)
connectTest.c:12: error: 'my' undeclared (first use in this function)

> mygcc -I /usr/include/mysql/ connectTest.c
Code:
/tmp/ccavceBz.o: In function `main':connectTest.c:(.text+0x24): undefined reference to `mysql_init'
collect2: ld returned 1 exit status

> mygcc -I /usr/include/mysql/ -L /usr/lib/ connectTest.c
Code:
/home/bofh/ds-0.2.9/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin-ccache/../lib/gcc/mipsel-linux-ucli                       bc/4.1.0/../../../../mipsel-linux-uclibc/bin/ld: skipping incompatible /usr/lib//libc.so when searching for -lc
/home/bofh/ds-0.2.9/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin-ccache/../lib/gcc/mipsel-linux-ucli                       bc/4.1.0/../../../../mipsel-linux-uclibc/bin/ld: skipping incompatible /usr/lib//libc.a when searching for -lc
/tmp/ccMsn7cn.o: In function `main':connectTest.c:(.text+0x24): undefined reference to `mysql_init'
collect2: ld returned 1 exit status



Mein Lib Verzeichniss...
Code:
bofh@bofh-debian:/usr/lib$ ls *mysql*
-rw-r--r--  1 root root 1219282 2006-08-28 21:15 libmysqlclient.a
-rw-r--r--  1 root root     859 2006-08-28 21:15 libmysqlclient.la
-rw-r--r--  1 root root 1228328 2006-08-28 21:15 libmysqlclient_r.a
-rw-r--r--  1 root root     893 2006-08-28 21:15 libmysqlclient_r.la
lrwxrwxrwx  1 root root      22 2007-02-14 04:14 libmysqlclient_r.so -> libmysqlclient_r.so.14
lrwxrwxrwx  1 root root      26 2007-02-14 04:14 libmysqlclient_r.so.14 -> libmysqlclient_r.so.14.0.0
-rw-r--r--  1 root root 1073864 2006-08-28 21:15 libmysqlclient_r.so.14.0.0
lrwxrwxrwx  1 root root      20 2007-02-14 04:14 libmysqlclient.so -> libmysqlclient.so.14
lrwxrwxrwx  1 root root      24 2007-02-14 04:14 libmysqlclient.so.14 -> libmysqlclient.so.14.0.0
-rw-r--r--  1 root root 1066632 2006-08-28 21:15 libmysqlclient.so.14.0.0
-rw-r--r--  1 root root 8844442 2006-08-28 21:15 libmysqld.a

Was mache ich falsch?
 
Du musst dir die Libs natürlich für Mipsel gegen uClibc-0.9.26 bauen. Und in deine Toolchain installieren.

MfG Oliver
 
Erstmal Danke Oli, aber ich verstehe trotzdem nur Bahnhof!
Kannst du das einmal bitte etwas erläutern?
 
Du darfst nicht die Header und Libs aus /usr/... nehmen. Du musst die für die Toolchain extra kompilieren.
libmysql runterladen, configure für mipsel, make (mit Crosscompiler) und make install (in dsmod-Toolchain).

MfG Oliver
 
Achso, jetzt versteh ich das Problem....

Aber da gehts schon los!
libmysql hab ich per apt-get install mit installiert, wie soll ich das einfach downloaden?
configure für Mipsel?... aha
make mit Crosscompiler?...aha
make install in ds-mod Toolchain... Ja das sagt mir was, nen Toolchain hab ich gebastelt und der läuft ja auch schon mal, Jetzt muss der also neu gemacht werden mit den mysql Lib's.....

Mfg Mahon
 
Zuletzt bearbeitet:
Die mit apt-get installierte für x86 vorkompilierte Library kannst du getrost wieder deinstallieren, die bringt dir hier nichts. Du mußt dir den Source Code besorgen und diesen mit dem mipsel-linux-uclibc-gcc übersetzen.

Die Toolchain muss nicht neu gebaut werden.

Mfg
danisahne
 
grob (!!) dürfte der Ablauf so aussehen:

falls du die uclibc statisch linken möchtest:
export CFLAGS=-static-libgcc
Pfad setzen, wo sich der crosscompiler befindet:
export CC=<anpassen>/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin/mipsel-linux-gcc-4.1.0
configure für Mipsel - bei dem Beispiel hier hab ich auch für die Fritz kompiliert
./configure --host=mipsel-*-linux*
das gute alte make:
jetzt das Ergebnis in ein Verzeichnis schieben lassen (natürlich ohne <> schreiben):
make install prefix=<Zielpfad>

Viel Glück!
 
Hallo,

Ich benötige ebenfalls eine libmysql für die Fritzbox. leider geht ein:
"./configure --host=mipsel-linux" nicht, da mysql folgendes sagt

checking "return type of sprintf"... configure: error: cannot run test program while cross compiling

Kann mir hier bitte jemand von den Experten eine Tip geben?


Vielen Dank
Peter
 
Schau mal bei openwrt. Da gibts einen Patch. Allerdings musst du dann wohl 5.0.18 nehmen... (Link)

MfG Oliver
 
Danke Oliver,

Wie kann man den Patch runterladen? Ist bei mir immer eine HTML Datei!


Peter
 
runter scrollen und auf Original Format drücken ;-)
 
Vielen Dank.


Peter
 
Hallo Oliver,

Noch mal ich. Habe mysql 5.0.18 gesaugt. Pacth passt scheinbar bestens, jedoch kommt jetzt diese Fehlermeldung:

checking for restartable system calls... configure: error: cannot run test program while cross compiling


Hat vielleicht irgendjemand schon eine libmysql erstellt?


Peter
 
@offtopic: es würde helfen, wenn der titel des ersten beitrags etwas besser zum problem passen würde, zb "mysql libraries für die fritzbox compilieren?" oder so...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.