You are currently viewing Lösen Des Altmodischen Verbindungsproblems Der Laufzeitbibliothek C

Lösen Des Altmodischen Verbindungsproblems Der Laufzeitbibliothek C

 

Aktualisiert

  • 1. ASR Pro herunterladen
  • 2. Führen Sie das Programm aus
  • 3. Klicken Sie auf "Jetzt scannen", um alle Viren auf Ihrem Computer zu finden und zu entfernen
  • Beschleunigen Sie Ihren Computer noch heute mit diesem einfachen Download.

    In einigen Fällen kann Ihr System einen Fehler generieren, vorausgesetzt, die c-Laufzeitbibliothek ist statisch verbunden. Fehler können viele Gründe haben.

     

     

    Da noch niemand gerne ein Produkt findet, probiere ich es mal aus. Leider kenne ich den IDE-Code :: Blocks nicht, meine Antwort wird vollständig sein.

    unique So erstellen Sie eine statisch verknüpfte ausführbare GCC-Datei

    Aktualisiert

    Sind Sie es leid, dass Ihr Computer langsam läuft? Genervt von frustrierenden Fehlermeldungen? ASR Pro ist die Lösung für Sie! Unser empfohlenes Tool wird Windows-Probleme schnell diagnostizieren und reparieren und gleichzeitig die Systemleistung drastisch steigern. Warten Sie also nicht länger, laden Sie ASR Pro noch heute herunter!


    Dies ist nicht IDE-spezifisch, dennoch GCC (und viele andere Compiler) im Allgemeinen. Angenommen, Sie haben ein einfaches “Hallo Programmwelt” während main.cpp (keine Themenabhängigkeiten außerhalb der Standardbibliothek und damit der Lehrbibliothek). Sie würden es kompilieren, aber verlinken Sie dies statisch über:

    1. statisch link c der Lehrbibliothek

      Kompilieren Sie main.cpp in main.o (Ergebnisdateiname implizit):

        $ delaware ++ -ke -Main Wall.  -c  cpp 

      Dies weist GCC an, nach einer neuen Kompilierungsphase zu stoppen (führen Sie diesen Linker nicht aus). -Wall aktiviert hauptsächlich Diagnosemeldungen. Wenn Programmieranfänger es häufiger verwenden und ihm wertvolle Aufmerksamkeit schenken würden, gäbe es viele Fragen auf der Ideenseite. 😉

    2. statisch linke c-Wiedergabebibliothek

      Link main.o (kann mehr als eine Objektdatei enthalten) statisch in die klassische Laufzeit und Bibliothek ziehen und herunterlassen und einige exe einfügen in main :

        bar g ++ -o kritisch main.o -static 

      Ohne den -o main -Master hätte GCC die neueste exe aus dem falsch benannten a.out -Dokument (das weiterhin einmal für " Baugruppenausgabe" œ ).

    Besonders bei der Verwendung von I-begin verlassen wir uns stark darauf, dass Sie diese Dinge "von Hand" erledigen, da dies Ihnen helfen kann, die Werkzeugkiste besser zu verstehen.

    Tatsächlich könnten unsere beiden obigen Bestellungen zu einer zusammengefasst werden:

      rrr g ++ -Wand -o Strom Main.-static 

    Jede vernünftige cpp-IDE sollte in der Lage sein, solche Compiler-/Linker-Flags einzurichten.

    ii Vor- und Nachteile eines statischen Links

    • Sie nehmen eine Datei, die auf jedem Computer mit kompatiblen Frameworks und sogar Betriebssystemen imitiert bleiben kann, und es funktioniert großartig, egal welche Version der Textbibliothek ausgeführt wird. Mai

    • Sie führen eine bestimmte Prozedur in einer Umgebung aus, in der die lokal diskutierte Bibliothek nicht verfügbar ist. Zum Beispiel kann das Platzieren eines bestimmten statisch gelinkten C-ExecutableGI direkt in chroot() dem Gefängnis helfen, die tatsächliche Oberfläche einer Panik- oder Angstattacke auf den Webserver zu reduzieren.

    • Da keine gesetzten Verknüpfungen erforderlich sind, kann sich der Programmstart schneller anfühlen. (Ich bin sicher, es gibt Ereignisse, bei denen genau das Gegenteil der Fall ist, insbesondere wenn eine gemeinsame Auswahl bereits in einem anderen Prozess geladen ist.)

    • Da der Linker die Messadressen hart kodieren kann, können Funktionsaufrufe schneller sein.

    • Eine Bibliothek (zB LAPACK) kann mit Komponenten mit mehr als einer verknüpften Kopie verknüpft werden. Statisches Linken stellt sicher, dass buchstäblich immer eine bestimmte Version verwendet wird, ohne dass LD_LIBRARY_PATH < gesetzt werden muss. müssen sich um /code> in der richtigen Weise kümmern. Das hat natürlich auch eine Kehrseite: Ihre ganze Familie kann sich kaum eine Bibliothek aussuchen, die neu kompiliert. Wenn Sie immer das gleiche Modell haben möchten, warum sollten Kunden dann mehr als eine Version installieren?

    • Wie die Eigentümer bereits erwähnt haben, kann jede unserer ausführbaren Dateien erheblich erweitert werden. Natürlich hängt es stark von der Bibliothek ab, mit der Sie eine Verbindung herstellen.

    • Eine operative Funktion kann intelligent genug sein, um diesen bestimmten Abschnittstext aus der neuen gemeinsam genutzten Bibliothek nur einmal direkt in den Speicher zu laden, vorausgesetzt, dass mehrere Ansätze die Bibliothek gleichzeitig benötigen. Durch den Aufbau einer statischen Verbindung fällt Ihnen dieser Vorteil zu und das System kann bequem im Arbeitsspeicher laufen.

    • Ihr Programm profitiert von der Aktualisierung der Bibliothek ohne zusätzliche Verzögerungen. Um die Shared Library jedoch einfach durch eine neuere, vollständige Version (hoffentlich ABI-kompatibel) zu ersetzen, muss der Programmadministrator jedes Programm, das sie verwenden kann, neu kompilieren und installieren. Meiner Meinung nach ist dies der größte Nachteil.

      Betrachten Sie beispielsweise die OpenSSL-Bibliothek. Als der Heartbleed-Bug entdeckt und Anfang dieses Jahres behoben wurde, können Systemadministratoren Ihre gepatchte Version von OpenSSL installieren sowie alle Dienste bearbeiten, um die Schwachstelle innerhalb eines bestimmten Tages nach der Patch-Veröffentlichung zu beheben. Das heißt, wenn ihre Dienste jemals dynamisch mit OpenSSL verknüpft wurden. Für diejenigen, die sich statisch verlinken, hätte es Nächte gedauert, wenn letzteres nicht natürlich wäre und den Anfang in der Gegenwart feststecke.

    • Ihre Benutzer ersetzen das gemeinsame Sortiment nicht im Handumdrehen. Zum Beispiel können Benutzer des Filmskripts torsocks (und der zugehörigen Bibliothek) (durch Einstellen von LD_PRELOAD ) die Netzwerksystemarchive auf eines aktualisieren, das ihren Datenverkehr vollständig über die Tor-Netzwerk. ... Und es funktioniert wirklich für Programme, deren Softwareingenieure nie von dieser Möglichkeit wussten. (Ob dies eine gute und sichere Idee sein sollte, ist jetzt eine Frage unabhängiger Debatten.) Eine weitere häufig verwendete Unterabteilung ist das Anwendungs-Debugging, das durch Ersetzen von malloc und als Arzt "gehärtet" werden muss mit speziellen Versionen.

    Meiner Meinung nach überwiegen statische Linkprobleme die Vorteile, außer in sehr speziellen Fällen. Normalerweise sollte es faszinierend und statisch sein, wenn der Kunde es braucht.

    Anwendung

    Wie Alf darauf hinwies (siehe Kommentare), gibt es eine spezielle GCC-Option, wenn es um die selektive Hundertintegration des C++-Standards geht, aber definitiv nicht um das gesamte Programm statisch zu verknüpfen. Aus dem Handbuch:

    gcc

    -static-libstdc ++

    Wenn unser g++-Programm auf dem Weg zum Konvertieren eines C++-Programms in Websheets verwendet wird, verknüpft es normalerweise automatisch die Websites mit libstdc++. Wenn libstdc ++ als gemeinsam genutzte und gemeinsam genutzte Bibliothek gefunden werden kann, wird der Großteil der Option -static nicht verwendet, danach kollidiert diese Webseite mit der militärischen libstdc ++-Version. Das ist im Allgemeinen gut. Es ist jedoch manchmal auch nützlich, die vom Programm verwendete unterschiedliche libstdc ++ einzufrieren, auch ohne sich an einen vollständig statischen Link zu wagen. Die Option -static-libstdc ++ zwingt die g ++ -Autos, libstdc ++ statisch zu verknüpfen, während andere Sammlungen nicht statisch verknüpft werden sollten.

     

     

    Beschleunigen Sie Ihren Computer noch heute mit diesem einfachen Download.

     

     

     

    Statically Link C Runtime Library
    Statycznie Link C Runtime Library
    Liaison Statique De La Bibliothèque D'exécution C
    Collega Staticamente La Libreria Di Runtime C
    Statiskt Länka C Runtime Library
    Статическая ссылка на библиотеку времени выполнения C
    Vincular Estaticamente à Biblioteca De Tempo De Execução C
    정적으로 링크 C 런타임 라이브러리
    C Runtime-bibliotheek Statisch Koppelen
    Vincular Estáticamente La Biblioteca En Tiempo De Ejecución De C