make bricht mit Fehlermeldungen ab



  • Hallo,

    mein System ist Debian 11 (bullseye), 64bit. Ich will mysql-workbench aus den Sourcen erstellen, die ich mir hier 'runtergeladen habe (die architekturunabhängige Version):

    https://dev-mysql-com.translate.goog/downloads/workbench/?_x_tr_sl=en&_x_tr_tl=de&_x_tr_hl=de&_x_tr_pto=sc

    Bin dann nach der "INSTALL" vorgegangen, habe noch eine andere Anleitung zu Rate gezogen (sind aber beide nicht ganz fehlerfrei, was die zusätzlich zu installierenden Pakete betrifft). 😉

    https://www-marekrost-cz.translate.goog/getting-mysql-workbench-to-work-on-debian-11?_x_tr_sl=en&_x_tr_tl=de&_x_tr_hl=de&_x_tr_pto=sc

    Jetzt läuft alles durch, bis "make" mit folgenden Fehlermeldungen abbricht:

    [ 98%] Building CXX object plugins/migration/CMakeFiles/wbcopytables-bin.dir/copytable/copytable.cpp.o
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp: In constructor ‘RowBuffer::RowBuffer(std::shared_ptr<std::vector<ColumnInfo> >, std::function<void(int, const char*, long unsigned int)>, size_t)’:
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp:348:18: error: cannot convert ‘WB_BOOL*’ {aka ‘bool*’} to ‘my_bool*’ {aka ‘char*’} in assignment
      348 |     bind.error = (WB_BOOL *)malloc(sizeof(WB_BOOL));
          |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                  |
          |                  WB_BOOL* {aka bool*}
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp:352:22: error: cannot convert ‘WB_BOOL*’ {aka ‘bool*’} to ‘my_bool*’ {aka ‘char*’} in assignment
      352 |       bind.is_null = (WB_BOOL *)malloc(sizeof(WB_BOOL));
          |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                      |
          |                      WB_BOOL* {aka bool*}
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp: In member function ‘bool MySQLCopyDataTarget::append_bulk_column(size_t)’:
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp:2279:12: error: ‘MYSQL_TYPE_TYPED_ARRAY’ was not declared in this scope; did you mean ‘MYSQL_TYPE_YEAR’?
     2279 |       case MYSQL_TYPE_TYPED_ARRAY: /* Used only for replication. */
          |            ^~~~~~~~~~~~~~~~~~~~~~
          |            MYSQL_TYPE_YEAR
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp:2294:12: error: ‘MYSQL_TYPE_INVALID’ was not declared in this scope; did you mean ‘MYSQL_TYPE_INT24’?
     2294 |       case MYSQL_TYPE_INVALID:
          |            ^~~~~~~~~~~~~~~~~~
          |            MYSQL_TYPE_INT24
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp:2297:12: error: ‘MYSQL_TYPE_BOOL’ was not declared in this scope; did you mean ‘MYSQL_TYPE_BLOB’?
     2297 |       case MYSQL_TYPE_BOOL:
          |            ^~~~~~~~~~~~~~~
          |            MYSQL_TYPE_BLOB
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp:2132:12: error: enumeration value ‘MAX_NO_FIELD_TYPES’ not handled in switch [-Werror=switch]
     2132 |     switch ((*_row_buffer)[col_index].buffer_type) {
          |            ^
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp: In member function ‘bool MySQLCopyDataTarget::InsertBuffer::append_escaped(const char*, size_t)’:
    /mysql-workbench-community-8.0.28-src/plugins/migration/copytable/copytable.cpp:2691:19: error: ‘mysql_real_escape_string_quote’ was not declared in this scope; did you mean ‘mysql_real_escape_string’?
     2691 |     ret_length += mysql_real_escape_string_quote(_mysql, buffer + length, data, (unsigned long)dlength, '\'');
          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                   mysql_real_escape_string
    cc1plus: all warnings being treated as errors
    make[2]: *** [plugins/migration/CMakeFiles/wbcopytables-bin.dir/build.make:82: plugins/migration/CMakeFiles/wbcopytables-bin.dir/copytable/copytable.cpp.o] Fehler 1
    make[1]: *** [CMakeFiles/Makefile2:2703: plugins/migration/CMakeFiles/wbcopytables-bin.dir/all] Fehler 2
    make: *** [Makefile:149: all] Fehler 2
    
    

    Fehler im Quelltext sind das wohl kaum (ich nehme an, ich bin nicht der erste, der den benutzt), 😉 also vermute ich stark, dass nur irgendwas noch nicht installiert / noch nicht richtig konfiguriert ist.

    Danke im voraus für zielführende Fehlersuchhinweise.



  • Ich tippe drauf, daß es am Compiler bzw. einer Compilereinstellung liegt. Welchen Compiler (+ Version) verwendest du denn und mit welcher C++ Standard Version (C++98, C++03, C++11, C++14, C++17, C++20) ?
    Such doch mal in den Sourcen (bzw. Header), wo WB_BOOL und my_bool definiert sind.

    Die weiteren Fehler bzgl. "not declared" deuten darauf hin, daß irgendein PP-Makro nicht gesetzt ist, um diese Typen zu definieren.

    Jedoch scheint der Fehler bzgl. "MAX_NO_FIELD_TYPES" wirklich im Code zu sein (bzw. du müßtest ohne -Werror=switch kompilieren.

    Und beim letzten Fehler findet der Compiler die Funktion mysql_real_escape_string_quote nicht (auch hier am besten mal die Sourcen danach durchsuchen).

    PS: Du kannst deinen Beitrag mittels "Bearbeiten" im Menü mit den drei Punkten editieren.



  • @Th69 sagte in make bricht mit Fehlermeldungen ab:

    Ich tippe drauf, daß es am Compiler bzw. einer Compilereinstellung liegt. Welchen Compiler (+ Version) verwendest du denn und mit welcher C++ Standard Version (C++98, C++03, C++11, C++14, C++17, C++20) ?

    Compilerversion: gcc (Debian 10.2.1-6) 10.2.1 20210110

    C++ Standard Version? Hm, "man gcc" liefert eine ganze Menge, welche nimmt man denn nun, oder welche verwendet der Compiler defaultmäßig ...

    -std=
               Determine the language standard.   This option is currently only supported when compiling C or C++.
    
               The compiler can accept several base standards, such as c90 or c++98, and GNU dialects of those standards, such as gnu90 or gnu++98.  When a base
               standard is specified, the compiler accepts all programs following that standard plus those using GNU extensions that do not contradict it.  For
               example, -std=c90 turns off certain features of GCC that are incompatible with ISO C90, such as the "asm" and "typeof" keywords, but not other
               GNU extensions that do not have a meaning in ISO C90, such as omitting the middle term of a "?:" expression. On the other hand, when a GNU
               dialect of a standard is specified, all features supported by the compiler are enabled, even when those features change the meaning of the base
               standard.  As a result, some strict-conforming programs may be rejected.  The particular standard is used by -Wpedantic to identify which
               features are GNU extensions given that version of the standard. For example -std=gnu90 -Wpedantic warns about C++ style // comments, while
               -std=gnu99 -Wpedantic does not.
    
               A value for this option must be provided; possible values are
    
               c90
               c89
               iso9899:1990
                   Support all ISO C90 programs (certain GNU extensions that conflict with ISO C90 are disabled). Same as -ansi for C code.
    
               iso9899:199409
                   ISO C90 as modified in amendment 1.
    
               c99
               c9x
               iso9899:1999
               iso9899:199x
                   ISO C99.  This standard is substantially completely supported, modulo bugs and floating-point issues (mainly but not entirely relating to
                   optional C99 features from Annexes F and G).  See <http://gcc.gnu.org/c99status.html> for more information.  The names c9x and iso9899:199x
                   are deprecated.
    
               c11
               c1x
               iso9899:2011
                   ISO C11, the 2011 revision of the ISO C standard.  This standard is substantially completely supported, modulo bugs, floating-point issues
                   (mainly but not entirely relating to optional C11 features from Annexes F and G) and the optional Annexes K (Bounds-checking interfaces) and
                   L (Analyzability).  The name c1x is deprecated.
    
               c17
               c18
               iso9899:2017
               iso9899:2018
                   ISO C17, the 2017 revision of the ISO C standard (published in 2018).  This standard is same as C11 except for corrections of defects (all of
                   which are also applied with -std=c11) and a new value of "__STDC_VERSION__", and so is supported to the same extent as C11.
    
               c2x The next version of the ISO C standard, still under development.  The support for this version is experimental and incomplete.
    
               gnu90
               gnu89
                   GNU dialect of ISO C90 (including some C99 features).
    
               gnu99
               gnu9x
                   GNU dialect of ISO C99.  The name gnu9x is deprecated.
    
               gnu11
               gnu1x
                   GNU dialect of ISO C11.  The name gnu1x is deprecated.
    
               gnu17
               gnu18
                   GNU dialect of ISO C17.  This is the default for C code.
    
               gnu2x
                   The next version of the ISO C standard, still under development, plus GNU extensions.  The support for this version is experimental and
                   incomplete.
    
               c++98
               c++03
                   The 1998 ISO C++ standard plus the 2003 technical corrigendum and some additional defect reports. Same as -ansi for C++ code.
    
               gnu++98
               gnu++03
                   GNU dialect of -std=c++98.
    
               c++11
               c++0x
                   The 2011 ISO C++ standard plus amendments.  The name c++0x is deprecated.
    
               gnu++11
               gnu++0x
                   GNU dialect of -std=c++11.  The name gnu++0x is deprecated.
    
               c++14
               c++1y
                   The 2014 ISO C++ standard plus amendments.  The name c++1y is deprecated.
    
               gnu++14
               gnu++1y
                   GNU dialect of -std=c++14.  This is the default for C++ code.  The name gnu++1y is deprecated.
    
               c++17
               c++1z
                   The 2017 ISO C++ standard plus amendments.  The name c++1z is deprecated.
    
               gnu++17
               gnu++1z
                   GNU dialect of -std=c++17.  The name gnu++1z is deprecated.
    
               c++20
               c++2a
                   The next revision of the ISO C++ standard, planned for 2020.  Support is highly experimental, and will almost certainly change in
                   incompatible ways in future releases.
    
               gnu++20
               gnu++2a
                   GNU dialect of -std=c++20.  Support is highly experimental, and will almost certainly change in incompatible ways in future releases.
    
    


  • @wodim sagte in make bricht mit Fehlermeldungen ab:

    C++ Standard Version? Hm, "man gcc" liefert eine ganze Menge, welche nimmt man denn nun,

    Möglichst den, der für die Software gilt, die man übersetzen möchte.

    oder welche verwendet der Compiler defaultmäßig ...

    Du hast doch die Ausgabe. Such da mal nach default. (geht auch hier im Browser)



  • gnu++14
    gnu++1y
      ... This is the default for C++ code. ...
    

    Du müßtest mal in den Headern schauen, ob es spezielle PP-Anweisungen bzgl. dem GCC gibt, so etwas wie

    #ifdef __GNUC__
      ...
    #endif
    

    bzw. explizit für bestimmte Versionen:

    #ifdef __GNUC__ > 3
    
    #endif
    

    Es gibt auch noch weitere vordefinierte GCC-Makros: Common Predefined Macros.
    (Diese PP-Makros gelten auch für C++, nicht nur für C)



  • Ich hab's aufgegeben. 😉 Habe mein System auf Debian 9 (stretch) zurückgesetzt, da lässt sich mysql-workbench problemlos als *.deb-Paket installieren. Trotzdem danke für eure Bemühungen.



  • DU weist schon das debian 9 komplett aus dem support gefallen ist?



  • @firefly sagte in make bricht mit Fehlermeldungen ab:

    DU weist schon das debian 9 komplett aus dem support gefallen ist?

    Nö, habe gerade mal interessehalber "apt update" gemacht - und siehe da, zwei Pakete konnten aktualisiert werden. 😉

    Und lieber ein "altes", aber eben "oldstable" System als eins, das nur Probleme macht. Das mit mysql-workbench war nur eins von vielen unter bullseye. Habe allerdings den neuen Kernel installiert, mit dem von stretch war die AMD-Grafik einfach nicht in den Griff zu kriegen.



  • Ok stimmt nicht ganz das es schon aus dem support gefallen ist aber der support endet am
    June 30, 2022.

    https://wiki.debian.org/LTS

    Und wegen mysql workbench.
    Für debian 10 hab ich das hier gefunden:
    das werden zwei varianten beschrieben (einmal nativ und einmal via snap)
    https://idroot.us/install-mysql-workbench-debian-10/

    Die snap variante funktioniert auch mit debian 11



  • @firefly sagte in make bricht mit Fehlermeldungen ab:

    Ok stimmt nicht ganz das es schon aus dem support gefallen ist aber der support endet am
    June 30, 2022.

    https://wiki.debian.org/LTS

    Und wegen mysql workbench.
    Für debian 10 hab ich das hier gefunden:
    das werden zwei varianten beschrieben (einmal nativ und einmal via snap)
    https://idroot.us/install-mysql-workbench-debian-10/

    Die snap variante funktioniert auch mit debian 11

    Aber nicht auf meiner Kiste. 😕


Log in to reply