PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C/C++ Binaries unter verschiedenen Linux/Unix Distributionen


Gast
2010-02-21, 02:20:01
Hallo,

ich programmiere zwar schon recht lange in C/C++, allerdings bisher immer nur unter Win.

Bin nun gerade dabei Linux zu erlernen und möchte auch dafür App's schreiben. Was mir nun aber immer wieder auffällt ist, dass die Linux App's meistens für bestimmte Distributionen vorkompiliert sind, wie z.B. hier:

http://www.transmissionbt.com/download.php

Aber warum ist das so? Ist Linux nicht immer gleich Linux? D.h. wenn ich nun eine Anwendung unter Arch kompiliere, läuft diese dann nicht zwangsläufig auch unter Ubuntu oder Gentoo?


mfg

Gast
2010-02-21, 09:37:55
Hallo Gast, ich kann dir nicht direkt helfen, stehe aber vor dem gleichen Problem zur Zeit.

Ich kann nur soviel sagen, dass Linux nicht gleich Linux ist.

fezie
2010-02-21, 09:45:28
Kommt halt drauf an was für Libraries du nutzt.
Wenn es nur die libc und libstdc++ ist, dürften die erzeugten Binaries unter so gut wie jeder Linux Distribution laufen und jedes Unix was die beiden GNU Libraries installiert hat.
Bei anderen kommts halt auf den SONAME von den Libraries drauf an.
Unter Linux/Unix sind halt die ABI und API nicht so stabil wie unter Windows.

Ganon
2010-02-21, 09:59:03
Jede Distribution nutzt meist eigene Installationsroutinen, deshalb musst du halt für jede Distribution eine eigenes Paket machen.

Dann nutzen verschiedene Distributionen auch unterschiedliche Versionen von Bibliotheken. Je nachdem was du nutzt, kann es sein, dass sich das ABI geändert hat und deine Anwendung erst neu kompiliert werden muss (ist auch Teil deren Strategie OpenSource zu fördern, á la "Gib und deinen Code, den Rest machen wir").

Also es kann, je nachdem wie viele Bibliotheken du nutzt schon sehr viele Probleme verursachen, wenn du auf unterschiedlichen Distries eine Binary veröffentlichen willst.

Prominentestes Beispiel bei mir letztens VirtualBox. ArchLinux hat auf libpng 1.4 umgestellt, welche Inkompatibel zu 1.2 ist. Jetzt habe ich in VirtualBox keine Icons mehr.

Gast
2010-02-21, 13:21:26
Naja, die Libs sind ein Grund. Wenn deine Programme nicht all zu komplex sind sollte das aber eigentlich kein Problem sein, notfalls kann man ja immer noch statisch linken (was wegen lib updates, Größe, etc. aber weniger schön ist)
Der Hauptgrund für die vielen "Download-Angebote" sind die verschiedenen Paketverwaltungen, hauptsächlich apt (debian & Co) und rpm (Suse, Readhat, ...). Die Anbieter packen passende Pakete und legen diese in so genante Repositories/PPAs ab damit Anwender sie möglichst einfach installieren und updaten können. Ausserdem chekcne Paketmanager auch gleich noch die Abhängigkeiten von Programmen wie z.B libxy >= 1.1.9

Wenn du mehr wissen willst such mal nach Paketmanager bzw. Repository, dann verstehst du's.

Gruß

Rechner-Tester

Unfug
2010-02-21, 13:41:49
Die Verzeichnisstrukturen sind auch nicht auf jedem System gleich.

Beispiele: Ort der Startdateien für Dienste
Arch: /etc/rc.d
Suse: /etc/init.d

Das selbe gilt für Config Dateien.

Die Problematik die du ansprichst finde ich ebenfalls sehr nervig. Sowohl als Programmierer als auch als Endnutzer.
Die letzten 10 Programme musste ich immer selber kompilieren, weil sie nicht im Packetmanager vorhanden waren oder veraltet waren. Ein einheitliches Installationssystem ...ein Traum.

drdope
2010-02-21, 13:48:14
Ist der geläufige Ansatz nicht eher, einfach den Quellcode zu veröffentlichen und es den jeweiligen Distros/bzw. deren Package-Maintainern zu überlassen daraus Pakete für "ihre" Distro zu basteln?

Darkstar
2010-02-21, 15:35:21
[…]
Unter Linux/Unix sind halt die ABI und API nicht so stabil wie unter Windows.Stimmt, unter Unix sind die ABI/API stabiler als bei Windows und Linux. Als Beispiel sei hier das Solaris Application Guarantee Program (http://www.sun.com/software/solaris/guarantee.jsp) genannt, wonach der für eine bestimmte Solaris-Version erzeugte Binärcode ohne Anpassung auch auf den nachfolgenden Solaris-Versionen läuft.

Ganon
2010-02-21, 15:40:25
Ist der geläufige Ansatz nicht eher, einfach den Quellcode zu veröffentlichen

Will nicht jeder.

Coda
2010-02-21, 17:25:33
Stimmt, unter Unix sind die ABI/API stabiler als bei Windows und Linux.
Bitte? Die Windows-API und ABI sind abwärtskompatibel zu Windows 95.

Aber eigentlich gilt das auch weitgehendst für Linux. Ich weiß zumindest auf Anhieb von keinem breaking change in einer userspace lib.

Ganon
2010-02-21, 17:33:21
Ich weiß zumindest auf Anhieb von keinem breaking change in einer userspace lib.

Ich weiß ja nicht inwieweit du Userspace-Lib siehst, aber neustes Beispiel ist, wie gesagt, libpng 1.4.

Coda
2010-02-21, 17:37:28
Das ist dann aber eher Bug als Absicht. Und ob der Bug in libpng selber liegt oder VirtualBox einfach komisch damit umgeht weiß man auch nicht.

Ganon
2010-02-21, 17:38:24
Wie siehst du das?
https://forum.archlinux.de/?page=Postings;id=20;thread=15122

Hängt damit zusammen.

Darkstar
2010-02-21, 19:19:18
Bitte? Die Windows-API und ABI sind abwärtskompatibel zu Windows 95.Von dem Gerücht habe ich auch schon gehört. Allerdings: Warum funktionieren regelmäßig einige MS-Office-Versionen nicht auf neu veröffentlichten MS-Windows-Versionen? Wozu gibt es lange (In-)Kompatiblitätslisten für Anwendungssoftware aller Art?

Coda
2010-02-22, 02:35:11
Wie siehst du das?
https://forum.archlinux.de/?page=Postings;id=20;thread=15122

Hängt damit zusammen.
Da steht ja auch leider keine Erklärung dabei warum das so ist.

Von dem Gerücht habe ich auch schon gehört. Allerdings: Warum funktionieren regelmäßig einige MS-Office-Versionen nicht auf neu veröffentlichten MS-Windows-Versionen? Wozu gibt es lange (In-)Kompatiblitätslisten für Anwendungssoftware aller Art?
Wenn es API-Probleme wären müssten sie ja abstürtzen oder sich die Probleme in anderer Form manifestieren. Ich nehme an das sind eher Infrastruktur-Probleme (Dateiberechtigungen etc.)

Gast
2010-02-23, 12:18:53
Bitte? Die Windows-API und ABI sind abwärtskompatibel zu Windows 95.

Aber eigentlich gilt das auch weitgehendst für Linux. Ich weiß zumindest auf Anhieb von keinem breaking change in einer userspace lib.
Och da gibts schon einiges, ich erinnere mich mit Grauen an das expat Debakel vor ein paar Jahren:
http://forums.gentoo.org/viewtopic-t-575655.html

Aktuell gibts AFAIK einen ABI Break Qt 4.5->4.6

Wobei das Sourcedistris wie gentoo,arch natürlich besonders betrifft, bei binärdistris ists wurscht, da bekommt das der anwender im Idealfall gar nicht mit und es müssen sich nur die Package Maintainer damit rumschlagen.