PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C/C++ und Library-Versionen in Linux


Gast
2009-10-29, 20:05:53
Hi,

ich habe ein wohl eher philosophisches Problem. Folgendes:

Ich habe an meinem Laptop ein C++ Programm entwickelt, das diverse Bibliotheken verwendet, unter anderem soci (ist eine Datenbankzugriffsbibliothek, aber um die Bibliothek im speziellen geht es mir nicht). Auf dem Laptop läuft Debian stable und da ich Bibliotheken gegen die ich programmiere immer gerne aus dem Paketverwaltungssystem installiere, Version 2.2. Lief auch alles gut, Programm ist fertig geworden. Zielsystem ist auch Debian stable.

Nach der Veröffentlichung möchte ich das ganze jetzt auf meiner Workstation - auf der Debian testing (die nächste Version) läuft - warten. Ich besorge mir also die Abhängigkeiten. Nur habe ich jetzt soci in der Version 3.0. Dort wurden leider inzwischen diverse Dinge geändert, u. A. der Namespace, d.h. das Programm kompiliert dort nicht. Und selbst wenn, würde ein gegen soci 3.0 gelinktes Programm auch mit der soci shared library in der Version 2.2 funktionieren? (Davon ausgehend, dass die Schnittstelle der benötigten Methoden sich nicht geändert hat)

Ich sehe die folgenden Lösungsmöglichkeiten:

- Das Programm auf soci 3.0 hochziehen. Auf dem Laptop dann irgendwie soci 3.0 besorgen und selbst kompilieren. Dann alle Benutzer zu Debian testing nötigen, die shared library mitliefern oder statisch linken.
- Das Programm so lassen wie es ist und stattdessen auf der Workstation irgendwie soci 2.2 besorgen und kompilieren.
- Das Programm durch Präprozessor-Fummelei kompatibel zu beiden Versionen machen.

Keine dieser Lösungen gefällt mir besonders gut.
Welche von denen favorisiert Ihr und warum? Gibt es weitere Möglichkeiten?

fezie
2009-10-29, 20:10:09
Und selbst wenn, würde ein gegen soci 3.0 gelinktes Programm auch mit der soci shared library in der Version 2.2 funktionieren? (Davon ausgehend, dass die Schnittstelle der benötigten Methoden sich nicht geändert hat)

Nein, da der SONAME sich geändert hat.
Mich wundert allerdings das die soci Pakete, den nicht im Paketnamen haben.

Also ich mein hier die Zahlen damit:
/usr/lib/libsoci_core-gcc-2_2-2.2.0.so
/usr/lib/libsoci_core-gcc-2_2.so

/usr/lib/libsoci_core-gcc-3_0-3.0.0.so
/usr/lib/libsoci_core-gcc-3_0.so


soci ist übrigens orphaned ist in Debian. Also es gibt keinen Maintainer dafür mehr:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=520746

Gast
2009-10-29, 22:41:26
Nein, da der SONAME sich geändert hat.
Mich wundert allerdings das die soci Pakete, den nicht im Paketnamen haben.


Ja, das finde ich auch seltsam. Das rettet einem bei boost den Hals, weil ich da auch in meinem squeeze noch ganz explizit Version 1.34 installieren kann.


soci ist übrigens orphaned ist in Debian. Also es gibt keinen Maintainer dafür mehr:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=520746

Das ist ja blöd, eine der wenigen vernünftigen SQL Bibliotheken unter C++...

Gast
2009-10-31, 01:06:04
Hat hier keiner Preferenzen? Keine Lösung für die Probleme in Sicht?