Plugins compile error gcc-7!

  • Hallo,


    könnte mal jemand helfen, hab diese Fehler bei compile Plugin mcli & mp3 mit "gcc-7"

    Mit gcc-6(ubuntu zesty) war noch alles Ok.


    **Plugin mp3**

    **Plugin mcli**


    Merci & Gruss

    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

  • call of overloaded ‘abs(unsigned int)’ is ambiguous


    Sehr wahrscheinlich geht da etwas schief. Ein abs macht bei einem unsigned int keinerlei Sinn.

    Egal ob es da als 'abs()' mit oder 'std::abs()' steht.

  • das Problem tritt mit gcc 7.3 (Ubuntu 18.04) auch beim Kompilieren von vdr 2.2.0 auf:


    Code
    dvbdevice.c: In member function ‘bool cDvbTuner::SetFrontend()’:
    dvbdevice.c:848:31: error: call of overloaded ‘abs(unsigned int&)’ is ambiguous
    frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF


    Die entsprechende Zeile ist in vdr 2.2 und 2.3.9 gleich.


    mit

    Code
    frequency = std::abs(frequency);

    kommt die gleiche Fehlermeldung.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Zitat

    Ein abs macht bei einem unsigned int keinerlei Sinn.

  • was macht dann Sinn?


    eingangs heisst es

    unsigned int frequency = channel.Frequency();


    Frequency() in channels.h ist zwar als int deklariert, aber wenn ich das hier auch auf int ändere, hagelt es Fehlermeldungen wegen unzulässiger Konversion

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Na ja, wenn es *unsigned* ist, dann gibt es keine negativen Werte. Gibt es aber keine negativen Wette, kannst du abs() weglassen und hast exakt den gleichen Effekt.


    Eigentlich liest es sich wie ein klassischer Programmierfehler, bei dem ein signed int später zu einem unsigned wurde ohne darüber nachzudenken.

  • Hi,

    guck dir doch mal den src bei yavdr ansible oder im easyvdr 4 Test ppa an. Das yavdr scheinen ja mehrere schon live zu nutzen, baut also wohl mit 18.04. Das easyvdr baut auch und ist glaub ich startbar, aber noch nicht wirklich nutzbar.


    Ist beides kein Plain VDR!


    MfG,

    Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • weisst Du, wo die Sourcen liegen?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Hi,

    der src ist immer im jew. ppa zu finden, daraus wird ja gebaut. Bei easyvdr liegt er zusätzlich der Bequemlichkeit halber in einem git.

    https://launchpad.net/~easyvdr…/4-vdr-unstable/+packages

    Bei View package details gibts dann die Links und dann vom Bionic Build.


    https://www.easy-vdr.de/git/?p…845eb8710d9622d90;hb=HEAD



    https://launchpad.net/~seahawk…+archive/ubuntu/vdr-2.3.9

    gilt ja dasselbe.




    MfG,

    Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • sehr mysteriös. Den Sourcen nach wurde da nichts verändert. Entweder die Pakete werden derzeit noch gar nicht unter Bionic selbst kompiliert, oder Ubuntu hat in letzter Minute eine neue Compilerversion verteilt.


    In remux.c habe ich das gleiche Problem:

    Code
    remux.c:1559:52: error: call of overloaded ‘abs(uint32_t)’ is ambiguous
    else if (abs(Delta - 1800) <= 1)


    Delta ist ein uint32_t. Also habe ich da jetzt auch mal das abs rausgenommen. Ebenso bei einer gleichartigen Stelle 4 Zeilen tiefer. Jetzt kompiliert vdr durch.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Bei VDR4arch wird dieser Patch für den VDR 2.2.0 genutzt: https://github.com/VDR4Arch/vd…r-stable/vdr/PKGBUILD#L22

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • seahawk, Du bist mein Held!


    In https://launchpad.net/~seahawk…dr0~bionic.debian.tar.bz2

    habe ich den Patch vergeblich gesucht. Kompiliert das denn mit vdr 2.3.9? Die Stellen mit dem abs in Verbindung mit unsigned-Daten sind da ja unverändert.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Die Änderung ist seit dem VDR 2.3.3 in den VDR Sourcen, daher braucht es dafür keinen Patch mehr:

    - Changed 'unsigned' to 'signed' in some places to avoid trouble with abs() in gcc6+ (reported by Derek Kelly).

    Von einem signed Integer kann man dann ohne Zweideutigkeiten mit abs() den Betrag ermitteln.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!