Hallo Leute, Habe immer folgenden Fehler, wenn ich MySQL4 auf dem RPI kompilieren will: mysqlbinlog.cc:538:1: error: narrowing conversion of ‘18446744073709551615ull’ f rom ‘ulonglong {aka long long unsigned int}’ to ‘longlong {aka long long int}’ i nside { } [-Wnarrowing] }; ^ mysqlbinlog.cc:538:1: error: narrowing conversion of ‘18446744073709551615ull’ f rom ‘ulonglong {aka long long unsigned int}’ to ‘longlong {aka long long int}’ i nside { } [-Wnarrowing] Makefile:593: recipe for target 'mysqlbinlog.o' failed make[2]: *** [mysqlbinlog.o] Error 1 make[2]: Leaving directory '/home/CAOAdmin/mysql-4.1.22/client' Makefile:459: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/home/CAOAdmin/mysql-4.1.22' Makefile:386: recipe for target 'all' failed make: *** [all] Error 2 Was hat das zu bedeuten?
SQLLLEr schrieb: > MySQL4 Hat es einen bestimmten Grund, dass du diese alte Version noch nutzen willst? MySQL ist inzwischen bei 5.7 SQLLLEr schrieb: > kompilieren Außerdem: Warum nicht: sudo apt-get install mysql-server (oder mariadb-server)
SQLLLEr schrieb: > Was hat das zu bedeuten Zu neuer compiler für zu alten Code. Versuch an den CFLAGS zu drehen, -fpermissive z.B.
Horst schrieb: > SQLLLEr schrieb: >> MySQL4 > > Hat es einen bestimmten Grund, dass du diese alte Version noch nutzen > willst? MySQL ist inzwischen bei 5.7 Das Homeverzeichnis /home/CAOAdmin läßt vermuten, daß der Herr gerne das Warenwirtschaftssystem "CAO Faktura" benutzen möchte, das laut Hersteller wohl nur mit MySQL 4.irgendwas funktioniert -- warum auch immer.
Sheeva P. schrieb: > warum auch immer Typischer Grund bei kommerziellen Produkten: Weil die letzte Client-Library genutzt wird, bevor von der LGPL auf die virale GPL umgestellt wurde.
Dinosaurier schrieb: > SQLLLEr schrieb: >> Was hat das zu bedeuten > > Zu neuer compiler für zu alten Code. > > Versuch an den CFLAGS zu drehen, -fpermissive z.B. Und wenn ich den Compiler downgrade? Unter Jessie lief es noch :-(
SQLLLEr schrieb: > Und wenn ich den Compiler downgrade? Kannst du auch machen. Ich würde aber zuerst über die Compiler-Optionen/CFLAGS gehen (-Werror, -Wall, -pedantic etc raus, ggfs -fpermissive rein). Macht weniger Aufwand, und man muss nicht so tief ins System eingreifen. (Nicht dass dann der Compiler plötzlich zu alt für die vorhandenen Libs+Headers ist)
Meine Installation sieht derzeit so aus: ./configure --prefix=/usr/local/mysql4 \ --with-unix-socket-path=/usr/local/mysql4/var/mysqld.sock \ --with-mysqld-user=mysql4 \ --with-server-suffix=mysql4 \ --with-tcp-port=3307 sudo make && make install Was und wie muss ich ändern, damit die CFLAGS berücksichtigt werden?
Normalerweise kann man die CFLAGS beim configure mit angeben. (Kann aber je nach Projekt wieder überschrieben/ignoriert werden. Ich werde das nicht für dich rauskniefeln, wie das im Uralt-Mysql ist. Eigeninitiative!) also ./configure CFLAGS="-O2 -Wno-error -fpermissive ...usw" --prefix=... Wenn es beim configure nicht greift, kannst du auch noch versuchen, es beim Make anzugeben, also make CFLAGS="...." Und: Da ist auch C++-Code mit im Spiel, oder? Also selbes Spiel mit "CXXFLAGS". SQLLLEr schrieb: > sudo make && make install Genau verkehrt herum. "make", also das kompilieren, braucht keine Root-Rechte. Nur das Installieren (Schreiben in Systemverzeichnisse) braucht sudo. also: ./configure CFLAGS="…" CXXFLAGS="…" --prefix=……… make CFLAGS="…" CXXFLAGS="…" && sudo make install
Nein. Hat irgendwie auch nicht funktioniert. Ich habe make und make install gestern mal getrennt ausgeführt. Siehe da: make install macht den Fehler. make läuft ohne Fehler durch. Anbei mal die Log Dateien vom vorherigen Versuch.
SQLLLEr schrieb: > Anbei mal die Log Dateien vom vorherigen Versuch. Auch mal reingeschaut?
1 | configure:2805: gcc -O2 -Wno-error -fpermissive,CXXFLAGS=-O2 -Wno-error -fpermissive conftest.c >&5 |
2 | gcc: error: unrecognized command line option '-fpermissive,CXXFLAGS=-O2' |
Was soll das Komma zwischen CFLAGS und CXXFLAGS?
NOP: creating mysqlshow if gcc -DUNDEF_THREADS_HACK -I. -I. -I.. -I../include -I../include -I../regex -O2 -Wno-error -fpermissive -MT mysqldump.o -MD -MP -MF ".deps/mysqldump.Tpo" -c -o mysqldump.o mysqldump.c; \ then mv -f ".deps/mysqldump.Tpo" ".deps/mysqldump.Po"; else rm -f ".deps/mysqldump.Tpo"; exit 1; fi cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C /bin/bash ../libtool --preserve-dup-deps --tag=CC --mode=link gcc -O2 -Wno-error -fpermissive -rdynamic -o mysqldump mysqldump.o ../libmysql/libmysqlclient.la -lcrypt -lnsl -lm -lz gcc -O2 -Wno-error -fpermissive -rdynamic -o .libs/mysqldump mysqldump.o ../libmysql/.libs/libmysqlclient.so -lcrypt -lnsl -lm -lz -Wl,--rpath -Wl,/usr/local/mysql4/lib/mysql creating mysqldump if gcc -DUNDEF_THREADS_HACK -I. -I. -I.. -I../include -I../include -I../regex -O2 -Wno-error -fpermissive -MT mysqlimport.o -MD -MP -MF ".deps/mysqlimport.Tpo" -c -o mysqlimport.o mysqlimport.c; \ then mv -f ".deps/mysqlimport.Tpo" ".deps/mysqlimport.Po"; else rm -f ".deps/mysqlimport.Tpo"; exit 1; fi cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C /bin/bash ../libtool --preserve-dup-deps --tag=CC --mode=link gcc -O2 -Wno-error -fpermissive -rdynamic -o mysqlimport mysqlimport.o ../libmysql/libmysqlclient.la -lcrypt -lnsl -lm -lz gcc -O2 -Wno-error -fpermissive -rdynamic -o .libs/mysqlimport mysqlimport.o ../libmysql/.libs/libmysqlclient.so -lcrypt -lnsl -lm -lz -Wl,--rpath -Wl,/usr/local/mysql4/lib/mysql creating mysqlimport if gcc -DUNDEF_THREADS_HACK -I. -I. -I.. -I../include -I../include -I../regex -O2 -Wno-error -fpermissive -MT mysqltest.o -MD -MP -MF ".deps/mysqltest.Tpo" -c -o mysqltest.o mysqltest.c; \ then mv -f ".deps/mysqltest.Tpo" ".deps/mysqltest.Po"; else rm -f ".deps/mysqltest.Tpo"; exit 1; fi cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C if gcc -DUNDEF_THREADS_HACK -I. -I. -I.. -I../include -I../include -I../regex -O2 -Wno-error -fpermissive -MT my_getsystime.o -MD -MP -MF ".deps/my_getsystime.Tpo" -c -o my_getsystime.o `test -f '../mysys/my_getsystime.c' || echo './'`../mysys/my_getsystime.c; \ then mv -f ".deps/my_getsystime.Tpo" ".deps/my_getsystime.Po"; else rm -f ".deps/my_getsystime.Tpo"; exit 1; fi cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C /bin/bash ../libtool --preserve-dup-deps --tag=CC --mode=link gcc -O2 -Wno-error -fpermissive -rdynamic -o mysqltest mysqltest.o my_getsystime.o ../regex/libregex.a ../libmysql/libmysqlclient.la -lcrypt -lnsl -lm -lz gcc -O2 -Wno-error -fpermissive -rdynamic -o .libs/mysqltest mysqltest.o my_getsystime.o ../regex/libregex.a ../libmysql/.libs/libmysqlclient.so -lcrypt -lnsl -lm -lz -Wl,--rpath -Wl,/usr/local/mysql4/lib/mysql creating mysqltest if g++ -DUNDEF_THREADS_HACK -I. -I. -I.. -I../include -I../include -I../regex -O2 -Wno-error -fpermissive -MT mysqlbinlog.o -MD -MP -MF ".deps/mysqlbinlog.Tpo" -c -o mysqlbinlog.o mysqlbinlog.cc; \ then mv -f ".deps/mysqlbinlog.Tpo" ".deps/mysqlbinlog.Po"; else rm -f ".deps/mysqlbinlog.Tpo"; exit 1; fi mysqlbinlog.cc:538:1: error: narrowing conversion of ‘18446744073709551615ull’ from ‘ulonglong {aka long long unsigned int}’ to ‘longlong {aka long long int}’ inside { } [-Wnarrowing] }; ^ mysqlbinlog.cc:538:1: error: narrowing conversion of ‘18446744073709551615ull’ from ‘ulonglong {aka long long unsigned int}’ to ‘longlong {aka long long int}’ inside { } [-Wnarrowing] Makefile:593: recipe for target 'mysqlbinlog.o' failed make[2]: *** [mysqlbinlog.o] Error 1 make[2]: Leaving directory '/home/CAOAdmin/mysql-4.1.22/client' Makefile:459: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/home/CAOAdmin/mysql-4.1.22' Makefile:386: recipe for target 'all' failed make: *** [all] Error 2 Aufruf war: ./configure CFLAGS="-O2 -Wno-error -fpermissive" CXXFLAGS="-O2 -Wno-error -fpermissive" --prefix=/usr/local/mysql4 \ --with-unix-socket-path=/usr/local/mysql4/var/mysqld.sock \ --with-mysqld-user=mysql4 \ --with-server-suffix=mysql4 \ --with-tcp-port=3307 sudo make CFLAGS="-O2 -Wno-error -fpermissive" CXXFLAGS="-O2 -Wno-error -fpermissive" && make install
du hast nur Blind meine Beispiele kopiert, und nicht selber nach passenden Optionen gesucht? -> Von mir gibt's nur "Hilfe zur Selbsthilfe", ich werde dir keine Lösung vorkauen. Meinen Hinweis weiter oben wg. Root-Rechten/"sudo" beim Compilieren und Installieren hast du absichtlich ignoriert oder nicht verstanden? Ideen: -fpermissive bei CFLAGs raus -Wno-narrowing wäre ein guter Kandidat (CXXFLAGS) Oder den Compiler auf einen älteren Standard zurückschalten, z.B. -std=gnu++98 (CXXFLAGS, Auf den 1998er Std) -std=gnu99 (CFLAGS)
Wenn du eine fertige MySQL4 Installation brauchst, kannst du eine in meinem Shop beziehen. Kann ich dir auch anpassen, wie du sie benötigst.
Ich zahle doch nicht für Freeware ! Wenn ich nur Make ausführe ohne Sudo, bricht bereits das Make ab. Mit Sudo lauft es durch und funktioniert. Danke :-)
SQLLLEr schrieb: > Ich zahle doch nicht für Freeware ! Freie Software (und das ist MySQL (GPL-Lizenz)) != Freeware Das sind zwei verschiedene Paar Schuhe. Und Open-Source Software hat mit Freeware genauso wenig zu tun. Freie Software/Open-Source muss keines Wegs kostenfrei sein. (free software - free as in 'free speech' not 'free beer')
Dinosaurier schrieb: > du hast nur Blind meine Beispiele kopiert, und nicht selber nach > passenden Optionen gesucht? > -> Von mir gibt's nur "Hilfe zur Selbsthilfe", ich werde dir keine > Lösung vorkauen. > > Meinen Hinweis weiter oben wg. Root-Rechten/"sudo" beim Compilieren und > Installieren hast du absichtlich ignoriert oder nicht verstanden? > > Ideen: > -fpermissive bei CFLAGs raus > -Wno-narrowing wäre ein guter Kandidat (CXXFLAGS) > > Oder den Compiler auf einen älteren Standard zurückschalten, z.B. > -std=gnu++98 (CXXFLAGS, Auf den 1998er Std) > -std=gnu99 (CFLAGS) Der Beitrag ist zwar schon alt, aber ich habe jetzt ganze 2 Tage mit dem Fehler verbracht. Der oben zitierte Kommentar brachte die Lösung! Ich wollte die Version 5.0.27 kompilieren. $ ./configure $ make -> Hier kam der Fehler "mysqld.cc:5997:1: error: narrowing conversion of ‘18446744073709551615’ from ‘ulong {aka long unsigned int}’ to ‘longlong {aka long int}’ inside { } [-Wnarrowing] };" -> Ich habe die g++ Zeile herausgesucht und separat mit der option "-std=gnu++98" nochmal kompiliert $ g++ -std=gnu++98 -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr/local\"" -DDATADIR="\"/usr/local/var\"" -DSHAREDIR="\"/usr/local/share/mysql\"" -DHAVE_CONFIG_H -I. -I. -I.. -I../innobase/include -I../include -I../include -I../regex -I. -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -MT mysqld.o -MD -MP -MF ".deps/mysqld.Tpo" -c -o mysqld.o mysqld.cc -> Sobald man ich jetzt den make erneut ausgeführt habe, lief der Kompilierungsprozess an der letzten Stelle weiter $ make So hat es bei mir funktioniert! :) Viele Grüße
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.