Ergebnis 1 bis 10 von 10

Thema: Fehler beim Kompilieren der Host-Tools für 7270/7570 - LZMA

  1. #1
    IPPF-Fünfhundert-Club Avatar von pengu
    Registriert seit
    18.09.2008
    Ort
    Leipzig
    Beiträge
    644

    Fehler beim Kompilieren der Host-Tools für 7270/7570 - LZMA

    nach einiger Zeit Freetz-Abstinenz und Problemen mit einer meiner 7270 wollt ich es nun wieder wagen, doch habe ich mit dem aktuellen Trunk ein Problem beim Kompilieren von LZMA.

    Auch ein make dir- oder distclean hilft nicht.

    Es kommt entweder zu dem einen oder anderen Fehler:

    Code:
    make -j2 -C /data/source/7270/SP/freetz-trunk/source/host-tools/lzma443/C/7zip/Compress/LZMA_Lib
    make[1]: Entering directory `/data/source/7270/SP/freetz-trunk/source/host-tools/lzma443/C/7zip/Compress/LZMA_Lib'
    g++ -O3 -Wall -c  -I ../../../ ZLib.cpp
    g++ -O3 -Wall -c  -I ../../../ ../LZMA/LZMAEncoder.cpp
    ZLib.cpp:183:31: Fehler: expected initializer before »OF«
    make[1]: *** [ZLib.o] Fehler 1
    make[1]: *** Warte auf noch nicht beendete Prozesse...
    ../LZMA/LZMAEncoder.cpp: In Elementfunktion »LONG NCompress::NLZMA::CEncoder::GetOptimumFast(UInt32, UInt32&, UInt32&)«:
    ../LZMA/LZMAEncoder.cpp:1207:68: Warnung: suggest parentheses around »&&« within »||«
    ../LZMA/LZMAEncoder.cpp:1208:69: Warnung: suggest parentheses around »&&« within »||«
    ../LZMA/LZMAEncoder.cpp:1223:82: Warnung: suggest parentheses around »&&« within »||«
    ../LZMA/LZMAEncoder.cpp:1225:97: Warnung: suggest parentheses around »&&« within »||«
    make[1]: Leaving directory `/data/source/7270/SP/freetz-trunk/source/host-tools/lzma443/C/7zip/Compress/LZMA_Lib'
    make: *** [/data/source/7270/SP/freetz-trunk/source/host-tools/lzma443/C/7zip/Compress/LZMA_Lib/liblzma.a] Fehler 2
    Code:
    make -j2 -C /data/source/7270/SP/freetz-trunk/source/host-tools/lzma443/C/7zip/Compress/LZMA_Lib
    make[1]: Entering directory `/data/source/7270/SP/freetz-trunk/source/host-tools/lzma443/C/7zip/Compress/LZMA_Lib'
    g++ -O3 -Wall -c  -I ../../../ ZLib.cpp
    g++ -O3 -Wall -c  -I ../../../ ../LZ/LZInWindow.cpp
    ZLib.cpp:183:31: Fehler: expected initializer before »OF«
    make[1]: *** [ZLib.o] Fehler 1
    make[1]: *** Warte auf noch nicht beendete Prozesse...
    make[1]: Leaving directory `/data/source/7270/SP/freetz-trunk/source/host-tools/lzma443/C/7zip/Compress/LZMA_Lib'
    make: *** [/data/source/7270/SP/freetz-trunk/source/host-tools/lzma443/C/7zip/Compress/LZMA_Lib/liblzma.a] Fehler 2
    Anfangs dachte ich es könnte evtl am GCC liegen, also habe ich es mit dem 4.4.6 und 4.5.3 probiert, mit dem selben Ergebnis.

    Wie vielleicht schon aus früheren Beiträgen ersichtlich verwende ich ein aktuelles Gentoo Linux und hatte seit einem Jahr keine Probleme beim Kompilieren von Freetz.

    Wenn ich ein Image für die 7170 baue, läuft alles, was wohl an der älteren LZMA Version liegt.

    Hier noch ein paar Daten zu meinem System:

    Code:
    Portage 2.1.10.27 (default/linux/amd64/10.0/desktop, gcc-4.5.3, glibc-2.13-r4, 3.0.6-gentoo x86_64)
    =================================================================
    System uname: Linux-3.0.6-gentoo-x86_64-AMD_Athlon-tm-_II_X2_220_Processor-with-gentoo-2.1
    Timestamp of tree: Fri, 14 Oct 2011 22:15:01 +0000
    app-shells/bash:          4.2_p10
    dev-java/java-config:     2.1.11-r3
    dev-lang/python:          2.6.7-r2, 2.7.2-r3, 3.1.4-r3, 3.2.2
    dev-util/cmake:           2.8.5-r2
    dev-util/pkgconfig:       0.26
    sys-apps/baselayout:      2.1
    sys-apps/openrc:          0.9.3-r1::poly-c
    sys-apps/sandbox:         2.5
    sys-devel/autoconf:       2.13, 2.68
    sys-devel/automake:       1.6.3-r1, 1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1-r1
    sys-devel/binutils:       2.21.1-r1
    sys-devel/gcc:            4.4.6-r1, 4.5.3-r1
    sys-devel/gcc-config:     1.4.1-r1
    sys-devel/libtool:        2.4-r3
    sys-devel/make:           3.82-r3
    sys-kernel/linux-headers: 2.6.39 (virtual/os-headers)
    sys-libs/glibc:           2.13-r4

    Ich werde das bei Gelegenheit mal auf einem aktuellen Ubuntu oder Debian System gegentesten.


    Erste Recherchen haben leider noch nichts ergeben, sonst hätte ich das Problem schon selbst gelöst.
    Internet: o2 16 Mbit, SpeedPing, PowerUpload, UFO frei
    DSL-Ver.: 1.52.50.35, SNR: 5/11 dB, Dämpfung: 22/12 dB

    FRITZ!Box 7270v1 8 MB 54.04.88 Freetz rev18902, DECT Basis,
    Netgear WNDR3700V2, OpenWRT Barrier Braker


    VoIP: o2, Sipgate
    DECT: 1x T-Sinus 501, 1x T-Sinus 301, 1x Siemens S1
    WLAN HW: 3x D-Link DWA160 A2, 2x Linksys WUSB600N v1. 1x Intel PRO/Wireless 4965AGN
    Voip-SW: CSipSimple @ Huawei U8600

  2. #2
    IPPF-Urgestein
    Registriert seit
    22.04.2007
    Beiträge
    10.995
    Das Makro OF wird bei mir in /usr/include/zconf.h:166 definiert.
    Die Verwendung diese Makros an dieser Stelle ist absolut unsinnig, das Beste wäre, es zu entfernen.

  3. #3
    Semi-Moderator Avatar von olistudent
    Registriert seit
    19.10.2004
    Ort
    Kaiserslautern
    Beiträge
    14.295
    Was macht das Macro?
    Code:
    #ifndef OF /* function prototypes */
    #  ifdef STDC
    #    define OF(args)  args
    #  else
    #    define OF(args)  ()
    #  endif
    #endif
    Könnte man da einfach OF() weglassen und nur die Parameter stehen lassen?

    Gruß
    Oliver
    Router: Fritz!Box Fon WLAN 7570, 7390, 7320, 7270, 3170
    Anbindung: T-Online DSL 16.000 RAM

    Visit ##fritzbox on Freenode for help
    Spenden für Freetz

  4. #4
    IPPF-Urgestein
    Registriert seit
    22.04.2007
    Beiträge
    10.995
    Das Makro macht nichts sinnvolles und gehört an der Stelle (Definition einer Funktion) nicht hin.

    Bei der Deklaration einer Funktion kann man damit den Code kompatibel zu alten (uralten) Compilern machen, aus der Zeit vor C89, vielleicht noch vorher. Daher auch der Test auf STDC (Standard C).

    Zu Zeiten des ursprünglichen K&R C hat man Funktionen so geschrieben:
    Code:
    /* Deklaration: */
    extern int func ();
    /* Definition */
    int func ()
    int param;
    {
      return param;
    }
    Seit mindestens 20 Jahren schreibt man es so:
    Code:
    /* Deklaration: */
    extern int func (int param);
    /* Definition */
    int func (int param)
    {
      return param;
    }
    Die Deklaration kann man mit dem Makro vereinheitlichen:
    Code:
    /* Deklaration: */
    extern int func OF((int param));
    Damit wird entweder die alte oder die neue Form erzeugt. Wenn man aber das Makro in der Definition der Funktion verwendet, kommt das heraus:
    Code:
    /* Definition */
    int func ()
    {
      return param;
    }
    Und das kann niemals funktionieren, weil der Parameter nicht definiert wird.

    Man sieht daran, dass dieses Stück Programm noch nie mit einem alten Compiler übersetzt wurde

    Die andere Frage ist, warum hier auf dem Build-System das Makro nicht definiert wird.

  5. #5
    IPPF-Fünfhundert-Club Avatar von pengu
    Registriert seit
    18.09.2008
    Ort
    Leipzig
    Beiträge
    644
    @ RalfFridl
    Da geb ich dir recht.
    Und genau da ist das Problem.
    Nach näherer Untersuchung fand ich bereits am Sonntag Abend heraus, dass genau da das Problem liegt.
    Bis zur Zlib Version 1.2.3 ist das auch so, doch genau das änderte sich in Version >=1.2.5.
    Dort wurde das Makro in _Z_OF unbenannt.

    Code:
    #ifndef _Z_OF /* function prototypes */
    #    define _Z_OF(args)  args
    #    define _Z_OF(args)  ()

    Durch das Umbenennen das nicht mehr:

    Code:
    
    ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
                                      const Bytef *source, uLong sourceLen,
                                      int level))
    {
    Geändert von pengu (18.10.2011 um 22:00 Uhr)
    Internet: o2 16 Mbit, SpeedPing, PowerUpload, UFO frei
    DSL-Ver.: 1.52.50.35, SNR: 5/11 dB, Dämpfung: 22/12 dB

    FRITZ!Box 7270v1 8 MB 54.04.88 Freetz rev18902, DECT Basis,
    Netgear WNDR3700V2, OpenWRT Barrier Braker


    VoIP: o2, Sipgate
    DECT: 1x T-Sinus 501, 1x T-Sinus 301, 1x Siemens S1
    WLAN HW: 3x D-Link DWA160 A2, 2x Linksys WUSB600N v1. 1x Intel PRO/Wireless 4965AGN
    Voip-SW: CSipSimple @ Huawei U8600

  6. #6
    IPPF-Urgestein
    Registriert seit
    22.04.2007
    Beiträge
    10.995
    Damit ist schon mal geklärt, warum das Makro jetzt nicht mehr definiert ist.

    Bevor man aber den Namen jetzt ändert, ist es besser, das Makro komplett zu entfernen.

  7. #7
    IPPF-Fünfhundert-Club Avatar von pengu
    Registriert seit
    18.09.2008
    Ort
    Leipzig
    Beiträge
    644
    Entfernen ist eine Idee, oder die zlib (1.2.3) in die Host-Tools zu nehmen und explizit verwenden.
    Diese muss vor der LZMA lib gebaut werden (da diese von zlib abhängt)
    Geändert von pengu (18.10.2011 um 22:08 Uhr)
    Internet: o2 16 Mbit, SpeedPing, PowerUpload, UFO frei
    DSL-Ver.: 1.52.50.35, SNR: 5/11 dB, Dämpfung: 22/12 dB

    FRITZ!Box 7270v1 8 MB 54.04.88 Freetz rev18902, DECT Basis,
    Netgear WNDR3700V2, OpenWRT Barrier Braker


    VoIP: o2, Sipgate
    DECT: 1x T-Sinus 501, 1x T-Sinus 301, 1x Siemens S1
    WLAN HW: 3x D-Link DWA160 A2, 2x Linksys WUSB600N v1. 1x Intel PRO/Wireless 4965AGN
    Voip-SW: CSipSimple @ Huawei U8600

  8. #8
    Semi-Moderator Avatar von olistudent
    Registriert seit
    19.10.2004
    Ort
    Kaiserslautern
    Beiträge
    14.295
    @Ralf
    So?

    Code:
    Index: tools/make/patches/100-lzma_zlib.lzma.patch
    ===================================================================
    --- tools/make/patches/100-lzma_zlib.lzma.patch	(revision 7808)
    +++ tools/make/patches/100-lzma_zlib.lzma.patch	(working copy)
    @@ -311,9 +311,9 @@
     +	UInt64 m_offset;
     +};
     +
    -+ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
    ++ZEXTERN int ZEXPORT compress2 (Bytef *dest,   uLongf *destLen,
     +                                  const Bytef *source, uLong sourceLen,
    -+                                  int level))
    ++                                  int level)
     +{
     +	CInMemoryStream *inStreamSpec = new CInMemoryStream(source, sourceLen);
     +	CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
    @@ -374,8 +374,8 @@
     +	return Z_OK;
     +}
     +
    -+ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
    -+                                   const Bytef *source, uLong sourceLen))
    ++ZEXTERN int ZEXPORT uncompress (Bytef *dest,   uLongf *destLen,
    ++                                   const Bytef *source, uLong sourceLen)
     +{
     +	CInMemoryStream *inStreamSpec = new CInMemoryStream(source, sourceLen);
     +	CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
    Gruß
    Oliver
    Router: Fritz!Box Fon WLAN 7570, 7390, 7320, 7270, 3170
    Anbindung: T-Online DSL 16.000 RAM

    Visit ##fritzbox on Freenode for help
    Spenden für Freetz

  9. #9
    IPPF-Urgestein
    Registriert seit
    22.04.2007
    Beiträge
    10.995
    Genau so.

    Es scheint auch die einzige Stelle zu sein, wo diesen Makro verwendet wird. Es gibt nicht einmal irgendwo eine Deklaration, für diese Funktionen oder für andere, wo das Makro verwendet wird.

    Es gibt unter http://www.7-zip.org/sdk.html inzwischen eine Version 9.20, von daher bringt es wohl nicht, das dem Autor zu schreiben. Die aktuelle Version enthält jedenfalls kein OF Makro mehr.

  10. #10
    Semi-Moderator Avatar von olistudent
    Registriert seit
    19.10.2004
    Ort
    Kaiserslautern
    Beiträge
    14.295
    Router: Fritz!Box Fon WLAN 7570, 7390, 7320, 7270, 3170
    Anbindung: T-Online DSL 16.000 RAM

    Visit ##fritzbox on Freenode for help
    Spenden für Freetz

Ähnliche Themen

  1. Asterisk 1.6.0.2 Fehler beim Kompilieren
    Von kombjuder im Forum Asterisk Allgemein
    Antworten: 7
    Letzter Beitrag: 07.01.2009, 15:09
  2. "No route to host" beim kompilieren
    Von swoft im Forum Freetz
    Antworten: 1
    Letzter Beitrag: 22.10.2006, 14:31
  3. Fehler beim kompilieren von toolchain
    Von DazClimax im Forum Freetz
    Antworten: 10
    Letzter Beitrag: 07.10.2006, 18:40
  4. LZMA fehler beim compilieren
    Von Cirion81 im Forum Freetz
    Antworten: 7
    Letzter Beitrag: 01.10.2006, 11:30
  5. zaphfc Fehler beim kompilieren
    Von jenner172 im Forum Asterisk ISDN mit Bristuff (hfc, zaptel)
    Antworten: 1
    Letzter Beitrag: 16.05.2006, 23:24

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •