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

    Hard & Software

    DVB-S: Silverstone LC17 mit 8,4" TFT Display, ASRock ALiveNF6G, AMD X2 3800+ (35W),4GB, GT 630 - nVidia-387, SSD 64GB, 2TB, TeVii S470, SkyStar S2, Cinergy T RC USB, Kodi-18.0, FB X10 Medion-Scroll, "easyVDR 3.5 (14.04 LTS) - Kernel-4.8.12 - VDR 2.3.8"
    -----------------------------

    DVB-C: ATC-620, Asrock K7S41GX, AMD Geode NX 1750, 2GB, picoPSU, Samsung 500GB 1x 1TB, LDW-851S, DVB-C Fujitsu-Siemens FF, Cinergy 1200, Nova T USB, Atric Rev.4, "easyVDR 0.8 - 2.6.35.10 VDR 1.7.16 "
    -----------------------------

    Client_1: Evo N600c, "Puppy-Slacko 6.3" VDR 2.2.0 - FB X10 Medion_OR25V
    -----------------------------

    Client_2: Himbeere-P2 - MLD-5.4 / LibreELEC-9.0-Milhouse(Kodi-18.0) (PVR-VNSI)

    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.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • 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: Odroid N2+ mit CoreELEC und Ubuntu in chroot, 2x WinTV DualHD, Sandisk 2TB SSD

    VDR2: Tanix TX3 mit VDR*ELEC, WinTV DualHD, 500GB SSD

  • Quote

    Ein abs macht bei einem unsigned int keinerlei Sinn.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • 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: Odroid N2+ mit CoreELEC und Ubuntu in chroot, 2x WinTV DualHD, Sandisk 2TB SSD

    VDR2: Tanix TX3 mit VDR*ELEC, WinTV DualHD, 500GB SSD

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

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • 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
    http://www.easy-vdr.de

  • 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-team/…table/+packages

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

    https://www.easy-vdr.de/git/?p=four/.g…9622d90;hb=HEAD


    https://launchpad.net/~seahawk1986-h…buntu/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
    http://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: Odroid N2+ mit CoreELEC und Ubuntu in chroot, 2x WinTV DualHD, Sandisk 2TB SSD

    VDR2: Tanix TX3 mit VDR*ELEC, WinTV DualHD, 500GB SSD

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

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

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

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!