Du bist nicht angemeldet.

#1 10.12.2015 12:13:42

stefanhusmann
Moderator

Änderung der C++-ABI

GCC 5.x enthält eine libstdc++ mit Unterstützung zweier ABIs, und Arch Linux verwendet jetzt die neue ABI.

Obwohl die alte C++ ABI immer noch da ist, wird empfohlen, alle Pakete, die nicht aus offiziellen Repos stammen, neu zu kompilieren. Insbesondere bei indirekten Abhängigkeiten zu Bibliotheken, die schon die neue ABI verwenden, kann dies nötig sein. Mit dem folgenden Skript kann man sich eine Liste der betroffenen Pakete generieren lassen:

#!/bin/bash

while read pkg; do
    mapfile -t files < <(pacman -Qlq $pkg | grep -v /$)
    grep -Fq libstdc++.so.6 "${files[@]}" 2>/dev/null && echo $pkg
done < <(pacman -Qmq)

Offline

#2 10.12.2015 12:59:08

Henrikx
Mitglied

Re: Änderung der C++-ABI

./alteabi.sh
chromium-pepper-flash
libchardet
libtaginfo-git
makemkv
makemkv-libaacs
thunderbird-lightning-bin

Sollte ich auf ein Update der Packer vertrauen, oder selbst aktiv werden?

Offline

#3 10.12.2015 13:36:27

stefanhusmann
Moderator

Re: Änderung der C++-ABI

Selber aktiv werden. Selbst wenn die Maintainer reagieren, wirst du AUR-Pakete ja ohnehin selber bauen müssen. Die meisten PKGBUILDS werden womöglich auch gar nicht angepasst werden müssen, nur die dadurch entstehenden Pakete.

Offline

#4 10.12.2015 13:45:59

danbruegge
Mitglied

Re: Änderung der C++-ABI

In wie fern muss man da aktiv werden? Ich habe jetzt dropbox-experimental neugebaut und es erscheint immer noch in der liste.


$ . oldabi.sh 
dropbox-experimental
evince2-light
firefox-beta-bin
seafile-client
telegram-desktop-bin

Beitrag geändert von danbruegge (10.12.2015 13:47:14)

Offline

#5 10.12.2015 13:54:13

c0mm0ner
Mitglied

Re: Änderung der C++-ABI

dropbox-experimental installiert nur bereits kompilierte Binärdateien, die halt gegen die alte ABI gebaut wurden, deshalb bringt es nichts, das Paket neu zu bauen. Der Switch auf die neue ABI kann bei Binärpaketen nur von Upstream vollzogen werden.

Offline

#6 10.12.2015 13:55:39

danbruegge
Mitglied

Re: Änderung der C++-ABI

Ok, danke für die Info. Bisher läuft mein System auch ohne Probleme nach dem Riesen Update und Neustart.

Einzig Shadow of Mordor will nicht starten, im Steam.

Offline

#7 10.12.2015 14:58:25

Henrikx
Mitglied

Re: Änderung der C++-ABI

@stefanhusmann
Danke für die Antwort.

Offline

#8 10.12.2015 15:24:19

Werner
Mitglied

Re: Änderung der C++-ABI

Beim Update stoße ich auf einen Konflikt zwischen gcc-libs und gcc-libs-multilib.

Auf zwei Archsystemen läuft bei mir gcc-libs-multilib anstelle von gcc-libs. Die Ersetzung war aufgrund des Paketes pdfstudio erfolgt, das gcc-libs-multilib zwingend benötigt. Mit den heutigen GCC 5.x-Updates ist das nicht mehr möglich:

pacman -Syu
---
Löse Abhängigkeiten auf...
Suche nach in Konflikt stehenden Paketen...
:: gcc-libs und gcc-libs-multilib stehen miteinander in Konflikt. gcc-libs-multilib entfernen? [j/N] j
Fehler: Konnte den Vorgang nicht vorbereiten (Kann Abhängigkeiten nicht erfüllen)
:: pdfstudio: benötigt gcc-libs-multilib
pacman -Qi gcc-libs
Fehler: Paket 'gcc-libs' wurde nicht gefunden
pacman -Qi gcc-libs-multilib
Name                 : gcc-libs-multilib
Version              : 5.2.0-2
Beschreibung         : Runtime libraries shipped by GCC for multilib
Architektur          : x86_64
---

Liegt da eventuell ein Fehler beim Paket gcc-libs vor?

Gruß, Werner

Offline

#9 10.12.2015 16:00:25

stefanhusmann
Moderator

Re: Änderung der C++-ABI

Nein, der Konflikt liegt in der Natur der Dinge. Prüfe einmal nach, ob in der pacman.conf die mulitilib-Varianten _vor_ den Entsprechungen ohne -multilib eingebunden sind. Dann sollte nicht versucht werden, gcclibs zu installieren.

Offline

#10 10.12.2015 16:07:55

Werner
Mitglied

Re: Änderung der C++-ABI

Vielen Dank Stefan!

Ich habe das Problem gerade vor ’ner Minute lösen können. Die Ursache war, dass ich zu kompliziert gedacht habe smile
Es war nur ein Sache der richtigen Reihenfolge: Ich habe das aktualisierte Paket gcc-libs-multilib 5.3.0-2 vor dem Gesamtupdate erst einmal gesondert neu installiert, danach lief’s problemlos durch.

Gruß, Werner

Edit: … [multilib] stand tatsächlich nachrangig in der pacman.conf

Beitrag geändert von Werner (10.12.2015 16:17:00)

Offline

#11 10.12.2015 18:21:06

MacNuke
Mitglied

Re: Änderung der C++-ABI

Wie verträgt sich das denn mit Anwendungen von denen man keinen Sourcecode hat? Typischerweise werden ja Pakete für Debian oder Ubuntu gebaut, die dann auch zufällig unter ArchLinux laufen. Baut ja kaum jemand für ArchLinux seine Software noch mal neu.

Offline

#12 10.12.2015 19:02:53

sekret
Mitglied

Re: Änderung der C++-ABI

Die alte ABI ist ja noch verfügbar, daher durchatmen und ruhig bleiben!

Blöde Frage von mir vielleicht, aber worin zeigt sich dieses Update, also dass Archlinux jetzt die neue ABI verwendet? Edit: Ok, jetzt kommt hier auch dieses riesige Update rein! big_smile

Beitrag geändert von sekret (10.12.2015 21:48:52)

Offline

#13 10.12.2015 19:33:25

midixinga
Mitglied

Re: Änderung der C++-ABI

also ich habe alle durch das Skript angemerkten AUR-Pakete neu gemacht, und slebst bei denen, die neu kompiliert wurden, hat sich nichts geändert, was das Script angeht; sie werden weiterhin aufgeführt?!

Offline

#14 11.12.2015 10:01:47

stefanhusmann
Moderator

Re: Änderung der C++-ABI

Wenn die neu kompilierten Programme weiterhin wie gewohnt funktionieren, würde ich die Füße stillhalten. Das Skript zeigt nur Kandidaten auf, die betroffen sein könnten.

Offline

#15 11.12.2015 10:03:49

stefanhusmann
Moderator

Re: Änderung der C++-ABI

MacNuke schrieb:

Wie verträgt sich das denn mit Anwendungen von denen man keinen Sourcecode hat? Typischerweise werden ja Pakete für Debian oder Ubuntu gebaut, die dann auch zufällig unter ArchLinux laufen. Baut ja kaum jemand für ArchLinux seine Software noch mal neu.

Die laufen nicht zufällig auch unter Arch Linux. Binärpakete sind oft statisch gelinkt, da kommt das Problem mit welchselnden Systembibliotheken nicht zum Tragen.

Offline

#16 11.12.2015 19:42:28

MacNuke
Mitglied

Re: Änderung der C++-ABI

stefanhusmann schrieb:

Die laufen nicht zufällig auch unter Arch Linux. Binärpakete sind oft statisch gelinkt, da kommt das Problem mit welchselnden Systembibliotheken nicht zum Tragen.

Das ist bei mir nur Skype. Der Rest ist dynamisch gelinkt. Also z.B. Google Chrome oder der Zoom.us Client.

Offline

#17 12.12.2015 03:44:35

LessWire
Mitglied

Re: Änderung der C++-ABI

Es betrifft also nur C++ und nicht reine C Programme?

So ist zwar das Thema dieses threads, aber sicherheitshalber nochmal meine Nachfrage (zumal ich bislang davon ausgegangen bin, daß C++ nur eine Art Precompiler für C ist und keinen Einfluß auf den erzeugten Maschinencode bzw. libraries hat) ?

Danke und Gruß, LW

Offline

#18 12.12.2015 15:30:31

stefanhusmann
Moderator

Re: Änderung der C++-ABI

Ja, reine C-Programme sind nicht betroffen.

Aber C++ ist nicht nur ein Preprozessor. g++ ist ein eigener Compiler.

Offline

#19 12.12.2015 15:38:15

Hihi
Gast

Re: Änderung der C++-ABI

LessWire schrieb:

zumal ich bislang davon ausgegangen bin, daß C++ nur eine Art Precompiler für C ist und keinen Einfluß auf den erzeugten Maschinencode bzw. libraries hat

Lol, so war das vor zwanzig Jahren. wink

#20 13.12.2015 06:27:11

LessWire
Mitglied

Re: Änderung der C++-ABI

Hihi schrieb:

Lol, so war das vor zwanzig Jahren. wink

Hehe, drum hab ich's wohl so auch in Erinnerung.

Aber unabhängig davon, C bleibt C - zumindest bei meinen kleineren 'Ein-Mann-Projekten' sowie für embedded systems - da gibt's nicht viel zu vererben wink
Ist aber ein anderes Thema ...

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums