You are currently viewing Oplossen Van Een Probleem Met De Runtime-bibliotheek Met Koppelingen C

Oplossen Van Een Probleem Met De Runtime-bibliotheek Met Koppelingen C

 

Bijgewerkt

  • 1. Download ASR Pro
  • 2. Voer het programma uit
  • 3. Klik op "Nu scannen" om eventuele virussen op uw computer te vinden en te verwijderen
  • Versnel uw computer vandaag nog met deze eenvoudige download.

    In enkele gevallen kan uw systeem een ​​fout genereren, wat betekent dat de c runtime-bibliotheek statisch gerelateerd is. Er kunnen veel redenen zijn voor een fout.

     

     

    Omdat nog niemand graag een behandeling vindt, ga ik het proberen. Helaas ken ik de IDE-code :: Blokken niet, en als gevolg daarvan zal mijn antwoord gedeeltelijk zijn.

    12 Een statisch gekoppeld GCC-uitvoerbaar bestand maken

    Bijgewerkt

    Bent u het beu dat uw computer traag werkt? Geërgerd door frustrerende foutmeldingen? ASR Pro is de oplossing voor jou! Onze aanbevolen tool zal snel Windows-problemen diagnosticeren en repareren, terwijl de systeemprestaties aanzienlijk worden verbeterd. Dus wacht niet langer, download ASR Pro vandaag nog!


    Dit is niet IDE-specifiek, naar waarheid GCC (en vele andere compilers) in het algemeen. Stel dat je een eenvoudige “Hallo programmawereld” hebt die helemaal doorloopt tot main.cpp (geen onderwerpafhankelijkheden buiten de standaardbibliotheek en dus de leerbibliotheek). Je zou het compileren, maar statisch naar elkaar linken via:

    1. statisch link c van leerbibliotheek

      Compileer main.cpp in main.o (impliciet resultaat bestandsnaam):

        $ gr ++ -ke -Hoofdmuur.  -c  cpp 

      Dit vertelt GCC om te stoppen na deze compilatiefase (voer deze linker niet uit). -Wall activeert voornamelijk diagnostische berichten. Als amateuristische programmeurs het vaker zouden gebruiken en er specialistische aandacht aan zouden besteden, zouden er veel vragen op de ideeënpagina staan. 😉

    2. statically link c playback library

      Link main.o (kan heel veel dan één objectbestand bevatten) sleep statisch en zwem naar de klassieke runtime en bibliotheek en plak de meeste de exe in main :

        ? rrr g ++ -o kritische main.o -static 

      Zonder de -o belangrijkste reductie te gebruiken, zou GCC de laatste exe hebben gehad van het slecht genaamde a.out document (dat ooit werd gebruikt voor "assemblage-uitvoer " ).

    Vooral als je I-begin gebruikt, raden we je ten zeerste aan om deze dingen "met de hand" te doen, zodat je de kunstgereedschapskist beter kunt begrijpen.

    In feite kunnen onze twee bovenstaande uitspraken worden gecombineerd tot één:

      fondsen g ++ -Wall -o stroom Main.-static 

    Elke gezonde cpp IDE zou zulke compiler/linker-vlaggen moeten kunnen maken.

    5 voordelen en nadelen van een statische link

    • Je neemt één bestand dat je kunt nabootsen op elke computer met compatibele frameworks tijdens besturingssystemen, en het werkt geweldig, ongeacht welke versie van de tekstbibliotheek er is geïnstalleerd. mei

    • U voert een bepaalde procedure uit in een omgeving waar de lokaal besproken bibliotheek niet beschikbaar is. Als u bijvoorbeeld een goed statisch gekoppeld C uitvoerbaar GI rechtstreeks in chroot () plaatst, kan de gevangenis de oppervlakte van een paniek- of angstaanval door de webserver verminderen.

    • Aangezien geïnduceerde snelkoppelingen niet nodig zijn, kan het opstarten van het programma altijd sneller gaan. (Ik weet zeker dat er gebeurtenissen zijn waarbij dit tegenovergestelde waar is, vooral wanneer een gedeelde voorraad al in een ander proces is geladen.)

    • Omdat de linker de deeladressen hard kan coderen, kunnen functieaanroepen sneller zijn.

    • Een bibliotheek (bijv. LAPACK) kan worden gekoppeld aan componenten met meer dan één gekoppelde productie. Statisch koppelen zorgt ervoor dat vaak een specifieke versie wordt gebruikt zonder dat u LD_LIBRARY_PATH < hoeft in te stellen. zorgen te maken over / code> nauwkeurig. Dit heeft natuurlijk ook een keerzijde: dan kun je bijna nooit een bibliotheek kiezen zonder hercompilatie. Als u altijd dezelfde productie wilt hebben, waarom zouden klanten dan meer dan één versie installeren?

    • Zoals eerder vermeld door shoppers, kan elk van onze uitvoerbare bestanden aanzienlijk worden. Het hangt natuurlijk sterk af van de bibliotheek waarmee u verbinding maakt.

    • Een operationele functie kan slim genoeg zijn om die specifieke sectietekst uit een absoluut gedeelde bibliotheek slechts één keer rechtstreeks in het geheugen te laden in het geval dat meerdere benaderingen de bibliotheek op hetzelfde moment vereisen. Door een statische koppeling tot stand te brengen, elimineert u dit voordeel en kan het systeem supersnel in het geheugen draaien.

    • Uw programma profiteert van het bijwerken van de bibliotheek zonder extra vertragingen. Om de gedeelde bibliotheek eenvoudigweg te vervangen door uw nieuwere, volledige versie (hopelijk ABI-compatibel), moet de programmamedewerker elk programma dat het gebruikt opnieuw compileren en installeren. Naar mijn mening is dit het grootste nadeel.

      Denk bijvoorbeeld aan de OpenSSL-bibliotheek. Toen de Heartbleed-bug eerder dit jaar werd ontdekt en verholpen, kunnen systeembeheerders meestal de gepatchte versie van OpenSSL installeren, evenals alle services om de kwetsbaarheid te verhelpen binnen slechts één dag na de release van de patch. Dat wil zeggen, alsof hun diensten dynamisch gekoppeld zijn aan OpenSSL. Voor degenen, die statisch verbonden, zouden er veel nodig zijn geweest als de laatste niet natuurlijk was en het begin in het heden had geïnstalleerd.

    • Uw gebruikers vervangen de gedeelde keuzes niet zomaar. Gebruikers van uw filmscript torsocks (en de betrokkenen bij de bibliotheek) kunnen bijvoorbeeld (door LD_PRELOAD in te stellen) de netwerksysteemarchieven wijzigen in een die hun verkeer volledig door de Tor-netwerk. ... En het werkt echt voor programma's waarvan de webontwikkelaars nooit van deze mogelijkheid wisten. (Of dit een goed en veilig idee kan zijn, is nu een volledige kwestie van onafhankelijk debat.) Een ander veelvoorkomend gebruiksscenario is het debuggen van applicaties, dat inderdaad moet worden "verhard" door malloc te vervangen en als eerstelijnsgezondheidszorg provider met gespecialiseerde versies.

    Naar mijn mening wegen statische linkproblemen zwaarder dan de voordelen, behalve door het gebruik van zeer speciale gevallen. Meestal moet het overtuigend en statisch zijn wanneer de klant het nodig heeft.

    Applicatie

    Zoals Alf naar buiten wees (zie opmerkingen), is er een speciale GCC-optie vanwege selectieve honderdintegratie van de C++ standaardkeuzes, maar zeker niet voor het statisch koppelen van het volledige programma. Uit de handleiding:

    gcc

    -static-libstdc ++

    Wanneer ons g++-programma wordt gebruikt als u een C++-programma naar een webwebsite wilt converteren, zal het de webpassage meestal automatisch koppelen aan libstdc++. Als libstdc ++ gevonden kan worden als een gedeelde en gedeelde bibliotheek, wordt de specifieke -static optie niet gebruikt, omdat deze webpagina in conflict is met de caudillo libstdc ++ versie. Dit is over het algemeen goed. Informatietechnologie is echter soms nuttig om de verschillende libstdc++ die door het programma worden gebruikt, te bevriezen, zelfs zonder een volledig statische link te onderhouden. De optie -static-libstdc ++ dwingt het voertuig g ++ om libstdc ++ statisch te koppelen, terwijl andere uw lokale bibliotheek niet statisch moet worden gekoppeld.

     

     

    Versnel uw computer vandaag nog met deze eenvoudige 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
    C-Laufzeitbibliothek Statisch Verknüpfen
    Statiskt Länka C Runtime Library
    Статическая ссылка на библиотеку времени выполнения C
    Vincular Estaticamente à Biblioteca De Tempo De Execução C
    정적으로 링크 C 런타임 라이브러리
    Vincular Estáticamente La Biblioteca En Tiempo De Ejecución De C