/ / Zu spezifische Abhängigkeiten vermeiden - c, linux, build, Abhängigkeiten, gemeinsam genutzte Bibliotheken

Zu spezifische Abhängigkeiten vermeiden - c, linux, build, Abhängigkeiten, gemeinsam genutzte Bibliotheken

Ich verwende eine gemeinsam genutzte C-Bibliothek unter Linuxbinär verteilt. Das Problem ist, dass die Abhängigkeiten genau die Versionen erfordern, die auf dem Entwicklungscomputer verfügbar sind. Zum Beispiel benötigt jede Version die (aktuellste) neueste Version von glibc und nur die genaue Version von libreadline auf ihrem System.

Ich habe die Entwickler kontaktiert und sie haben keineweiß was zu tun ist. Soweit ich das beurteilen kann, verwenden sie nicht bewusst die neuesten Funktionen. Daher sollte die Bibliothek weiterhin mit älteren Abhängigkeiten arbeiten. Ich denke, sie verwenden gcc unter Linux, aber sie verwenden auch ein komplexes make-System, um andere Compiler für Windows und Unix zu steuern.

Wie und in welchem ​​Umfang können Sie den Erstellungsprozess so verwalten, dass eine Bibliothek nur Abhängigkeiten von einer ausreichenden Version erfordert und auch spätere Versionen akzeptiert?

Dies war eine verwandte frage.

Bearbeiten: Um klar zu sein, möchte ich wissen, wie man Programme erstelltDaher akzeptieren sie Abhängigkeiten mit einer bestimmten Versionsnummer oder späteren Nummern. Egal ob die Entwickler es kompilieren oder ich tue, ich möchte in der Lage sein, eine Binärdatei zu verteilen, die nicht genau die Versionen der Abhängigkeiten in der Build-Umgebung erfordert.

Bearbeiten 2: Nachdem ich die Frage neu formuliert hatte, wurde mir klar, dass dies schon oft besprochen wurde. Einige der besten Fragen und Antworten:

Die Bereitstellung von Yesod für Heroku kann nicht statisch erstellt werden

Kompilieren Sie mit älterer libc

Verknüpfung mit einer alten libc-Version

Wie kann ich eine Verbindung zu einer bestimmten glibc-Version herstellen?

Antworten:

1 für die Antwort № 1

Es ist nicht sehr vertrauenserregend. Sie sollten auf einer stabilen Basisversion basieren, es könnte sich lediglich um eine virtuelle Installation handeln. Einige Linux-Versionen kopieren eine Build-Umgebung, sodass Pakete nicht mit aktualisierten Bibliotheksversionen verknüpft werden.

Mit dem openSUSE-Build-Service können Entwickler für eine Vielzahl von Paketen Binärpakete erstellen http://openbuildservice.org/about/

IIRC Readline ist ein GPL-Programm und prüft bei http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html#Availability schlägt vor, dass es GPL v 3 ist, so dass sie in sein könntenVerletzung der GPL, wenn sie libreadline-Funktionen verwenden und Sie den Quellcode für ihre Bibliothek angeben müssen. Ich bin nicht sicher, ob Sie RPM / APT-Paketabhängigkeiten meinen oder die Bibliothek libreadline aufruft.

Sie können Dateien jederzeit aus rpm- oder apt-Paketen extrahieren, um Software-Manager-Probleme zu vermeiden, die durch unzureichende Paketierung verursacht werden.