Frage zu standalone program



  • Hallo zusammen,

    ich habe heute ertemal kleines Tool unter Linus geschreieben.

    IDE: Anjutha
    OS : Redhat 9.0

    Tool lief unter Redhat problemlos. Ich habe dann auf Mandrake 8.2 gestartet. bekomme Fehlermeldung "libstdc++".so.5 fehlt.

    was ich merkwüdig fand, auf beide Systeme habe ich mit dem folgede Befehl
    "find / -name "libstd" nicht gefunden.

    meine Frage ist: wie kann man ohne dynamische Lib arbeitet? oder was muss ich tun wenn ich dieses Problem umgehen will?

    PS: Ich will große Anwendung schreiben! dieses Tool soll nur eine Datei lesen, schreiben und eine extere anwendug aufrufen.

    Danke im voraus.
    S.Mathi



  • Deine Suche war falsch:

    find / -name "libstd*"
    

    Dein RedHat 9.0 ist veraltet. Die libstdc++ ist auf einem alten Stand und bei Mandrake 8.2 ist eine neuere Version dabei.

    Du hast unter anderem folgende Optionen:

    1. Du kompilierst auf Mandrake neu.
    2. Du kompilierst eine statische Version deines Programms.

    Die größte Austauschbarkeit hast du, wenn du gegen die LSB kompililerst. Aber auch da hilft es nicht, wenn du etwas veraltetes wie RedHat 9.0 verwendest.



  • Hallo Ponto vielen Danke für Tipps. Ich habe -static mit gegeben, so ist das Problem erste mal gelöst.

    sage bitte wofür steht "LSB" ?

    Danke.
    Mathi



  • smathi schrieb:

    Hallo Ponto vielen Danke für Tipps. Ich habe -static mit gegeben, so ist das Problem erste mal gelöst.

    sage bitte wofür steht "LSB" ?

    Es steht für "Linux Standard Base".



  • Außerdem könnte es noch zu Problemen kommen, da sich beim GCC die C++ ABI öfter mal geändert hat. Du könntest also die stdc++ statisch linken (http://www.trilithium.com/johan/2005/06/static-libstdc/) und nur C Bibliotheken dynamisch linken, da die C ABI schon seit Ewigkeiten stabil ist, sollte es damit keine Probleme geben.


Anmelden zum Antworten