BlackBoard (http://www.black-board.net/index.php)
- Computerecke (http://www.black-board.net/board.php?boardid=30)
-- Betriebssysteme (http://www.black-board.net/board.php?boardid=11)
--- Linux library mit configure bauen - version für abhängigkeiten übergeben (http://www.black-board.net/thread.php?threadid=22163)


Geschrieben von phlox81 am 16.05.2006 um 09:35:

  library mit configure bauen - version für abhängigkeiten übergeben

Hi,

ich hab gerade folgendes Problem:
Ich habe ein Programm geschrieben, welches nun auch läuft.
Allerdings ist auf dem Server nur die libstdc++.so.5, auf meinem
System allerdings die version 6 schon installiert, da es ein knoppix
ist, kann ich da nicht viel ändern. Ich würde auch ungern auf dem Server
die Sache kompilieren, das ist die letzte Möglichkeit die ich in betracht ziehe.

das eigentliche Programm konnte ich schon gegen die 5er version linken,
allerdings linkt die lib immer noch gegen 6. Nun stelle ich mir die Frage,
ob wenn ich die lib neu baue, ich über configure irgendwie sagen kann,
das er die 5er nehmen soll und nicht die 6er.

phlox



Geschrieben von Black Star am 16.05.2006 um 11:24:

 

Du kannst beim Linken auch den kompletten Namen angeben.
Also -l/usr/lib/..../libstdc++.so.5 statt einfach -llibstdc++.
Evtl. auch ohne -l. Vielleicht hast du sogar statische (.a) stdc++ libs da, dann kannst du sie wie eine Objekt-Datei mit reinschreiben.

Habs selbst wohl noch nie probiert.

Ein entsprechender configure.ac-code saehe dann wohl so aus:
code:
1:
2:
3:
4:
5:
6:
7:
8:
AC_ARG_WITH([stdc++],
                        AC_HELP_STRING([--with-stdc++=/path/to/libstdc++],
                            [force linking against this libstdc++]),
             [STDCCLINK="$withval"],
             [STDCCLINK="-lstdc++"]
                        )
AC_SUBST(STDCCLINK)


Und in der Makefile.am:
code:
1:
targetname_LDADD = $(STDCCLINK)

Mit targetname = Name des Ziels beim Linken.

UPS - hab grad gemerkt, dass ich deine Frage nicht ganz richtig verstanden habe Augen rollen
Was spricht denn dagegen auf dem Server zu kompilieren?

Ansonsten probier mal LDFLAGS="/usr/lib/..../libstdc++.so.5" ./configure && make



Geschrieben von phlox81 am 16.05.2006 um 13:07:

 

Also was dagegen spricht ist z.b. das es einfach nicht so gut ist,
auf Production servern zu kompilieren bzw. zu entwickeln.
Von daher die Idee es anders zu bauen, und dann auszurollen.
Ich werd mal in das entsprechende configute script schauen,
und es gegebenenfalls anpassen, aber evtl. bau ich es auch
einfach auf dem Productionserver, die Sache soll möglichst schnell gehen...

was statisches Linken angeht, das geht mit C++ leider bei dieser Library
nicht so gut: http://www.trilithium.com/johan/2005/06/static-libstdc/

phlox



Geschrieben von phlox81 am 17.05.2006 um 19:25:

 

Also die Sache läuft immer noch nicht, aber ich bin schon mal was weiter gekommen...
Mittlerweile hab ich ein knoppix mit einer entsprechenden Umgebung (also nur vers.5)
aber auch dort habe ich bisher probleme die anwendung zu kompilieren...

Jetzt hatte ich noch eine Idee, welche ich unter Windows z.b. wohl machen könnte:
Einfach die .so datei ins Programmverzeichnis. Findet linux die dann?



Geschrieben von Black Star am 17.05.2006 um 22:52:

 

Mit -L. vielleicht.
Das andere Problem ist, dass die Anwendung beim Starten die so-Datei auch finden muss.
Dafuer muss sie im ld.so.cache erfasst sein. Dazu muss das Verzeichnis in der /etc/ld.so.conf stehen und zum Updaten muss ldconfig ausgefuehrt werden.



Geschrieben von phlox81 am 18.05.2006 um 08:53:

 

naja, ich hab jetzt ein paar tage probiert, und es kompiliert nicht
wirklich unter Knoppix 3.8.2 (Linker Fehler)

Da aber nicht mehr allzu viel Zeit im Projekt ist, werd ich jetzt einfach
die 6 er version erstmal auf den Server tun, ist ja kein Beinbruch.
Die läuft dann hoffentlich... großes Grinsen


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH