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)
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.
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)
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