You are currently viewing Risoluzione Di Problemi Relativi Alla Libreria Di Runtime Statica C

Risoluzione Di Problemi Relativi Alla Libreria Di Runtime Statica C

 

Aggiornato

  • 1. Scarica ASR Pro
  • 2. Esegui il programma
  • 3. Fai clic su "Scansiona ora" per trovare e rimuovere eventuali virus sul tuo computer
  • Accelera il tuo computer oggi con questo semplice download.

    In alcuni casi, il tuo sistema attuale potrebbe generare un errore che indica che questa libreria di runtime c è collegata staticamente. Probabilmente ci saranno molte ragioni per questo errore.

     

     

    Dato che a nessuno piace ancora trovare una risposta, ci proverò. Sfortunatamente, non prendo in considerazione il Codice IDE :: Blocchi, quindi il mio ritiro sarà parziale.

    1 Come creare un eseguibile GCC collegato staticamente

    Aggiornato

    Sei stanco della lentezza del tuo computer? Infastidito da messaggi di errore frustranti? ASR Pro è la soluzione per te! Il nostro strumento consigliato diagnosticherà e riparerà rapidamente i problemi di Windows, aumentando notevolmente le prestazioni del sistema. Quindi non aspettare oltre, scarica ASR Pro oggi!


    Questo non è specifico dell’IDE, ma di GCC (e molti altri compilatori) in generale. Supponiamo che tu offra un semplice “Hello program world” in main.cpp (nessuna dipendenza dagli argomenti al di fuori della libreria tradizionale e quindi della libreria runtime). Lo compileresti senza dubbio, ma lo collegheresti staticamente tramite:

    1. collegamento statico alla libreria di runtime c

      Compila main.cpp in main.o (implicitamente nome file risultato):

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

      Questo dice a GCC di fermarsi dopo il grado di compilazione (non eseguire questo linker). -Wall vale attiva i messaggi di diagnostica. Se i programmatori alle prime armi lo utilizzassero più spesso e vi prestassero particolare attenzione, ci sarebbero molte domande sulla pagina delle idee specifiche. 😉

    2. collega staticamente alla libreria di runtime c

      Collega main.o (può contenere più di un file oggetto) trascina e rilascia staticamente nel runtime e nella libreria comuni e incolla l’exe secondo main :

        $ delaware ++ -o critical main.o -static 

      Senza generare l'uso del controllo -o main , GCC normalmente avrebbe dovuto avere l'ultimo exe in qualsiasi documento a.out con nome errato (che una volta era ampiamente usato per "output dell'assieme" œ ).

    Specialmente quando si utilizza I-begin, consigliamo vivamente a chiunque di eseguire queste operazioni "a mano", poiché può anche aiutare a comprendere meglio gli strumenti di compilazione.

    In effetti, i nostri due comandi precedenti potrebbero esistere combinati in uno:

      $ t ++ -Wall -o current Main.-static 

    Ogni IDE cpp razionale dovrebbe essere in grado di specificare il tipo di flag del compilatore/linker.

    2 vantaggi e svantaggi di un collegamento statico

    • Prendi un file che può essere imitato su qualsiasi computer con framework e dispositivi operativi compatibili e funziona alla grande indipendentemente dalla versione della libreria di testo installata. maggio

    • Stai eseguendo una procedura attraverso un ambiente in cui la libreria condivisa locale non è realmente disponibile. Ad esempio, posizionare un eseguibileGI C in modo statico direttamente in chroot () probabilmente aiuterà il jail a ridurre la superficie collegata a un attacco di panico o paura sul server del pianeta.

    • Poiché le scorciatoie attivate sicuramente non saranno necessarie, l'avvio del programma può essere più veloce. (Ovviamente ci sono eventi in cui è indubbiamente vero il contrario, soprattutto quando una libreria condivisa è senza dubbio caricata in un altro processo.)

    • Poiché il linker può codificare gli indirizzi dei ruoli, le chiamate alle funzionalità possono essere più veloci.

    • Una libreria (es. LAPACK) può essere collegata a ingredienti con più di una versione collegata. La creazione di un backlink statico garantisce che una versione specifica venga sempre utilizzata senza dover impostare LD_LIBRARY_PATH <. deve preoccuparsi di / codice> correttamente. Ovviamente, questo ha anche uno svantaggio: puoi sempre scegliere una libreria senza ricompilare. Se i clienti desiderano avere la stessa versione in una determinata volta, perché dovrebbero installare più di una versione?

    • Come hai detto molto prima, qualsiasi nostro eseguibile può crescere in modo significativo. Ovviamente dipende molto da una particolare libreria a cui ti stai connettendo.

    • Una funzione operativa può essere abbastanza intelligente da mettere in tensione quel particolare testo di sezione da un catalogo condiviso direttamente in memoria solo una volta se più mezzi richiedono la biblioteca contemporaneamente. Stabilendo un collegamento statico, si perde questo vantaggio e il sistema può funzionare più velocemente nelle memorie.

    • Il tuo programma beneficia dell'aggiunta della libreria senza ulteriori ritardi. Tuttavia, per sostituire ad esempio la libreria condivisa con una versione più recente e completa (si spera compatibile con ABI), l'amministratore del programma deve ricompilare e installare ogni programma che lo utilizza. Questo secondo me è l'inconveniente più grave.

      Ad esempio, considera la libreria OpenSSL. Quando il bug Heartbleed è stato scoperto e risolto più rapidamente quest'anno, gli amministratori di sistema possono installare lo stile patchato di OpenSSL e riavviare tutte le cure per correggere la vulnerabilità entro un giorno dal rilascio della patch. Cioè, se le loro competenze fossero collegate dinamicamente a OpenSSL. Per coloro che si sono collegati staticamente, ci sarebbero volute settimane se quest'ultimo non fosse naturale e fissasse l'inesperto nel presente.

    • I tuoi consumatori non stanno sostituendo la libreria condivisa all'istante. Ad esempio, gli utenti della storia del film torsocks (e della libreria collegata) possono eventualmente (impostando LD_PRELOAD ) modificare gli archivi del sistema Internet in uno che indirizza la loro pagina Web interamente attraverso la rete Tor. ... E funziona davvero per i programmi i cui sviluppatori non hanno mai sospettato di questa possibilità. (Se questa è un'idea sana e sicura è ora una questione che utilizza un dibattito indipendente.) Un altro caso d'uso comune è il debug delle attività, che deve essere "rinforzato" dalla manutenzione più costosa malloc e come ob con versioni qualificate.

    A mio parere, i problemi di riempimento statico superano i vantaggi, tranne in casi molto determinati. In genere, dovrebbe essere dinamico e sano quando il cliente ne ha bisogno.

    Applicazione

    Come ha sottolineato Alf (vedi commenti), su questo punto c'è una speciale opzione GCC per alcune centinaia di integrazioni della libreria standard C++, ma sicuramente non per il collegamento statico dell'intero programma. Dal manuale:

    gcc

    -static-libstdc ++

    Quando viene utilizzato un programma g ++ personale per convertire qualsiasi tipo di programma C ++ in pagine Web, di solito dovrebbe essere in grado di collegare automaticamente le pagine Web per assicurarsi di libstdc ++. Se libstdc ++ può essere trovato mentre una libreria condivisa e condivisa, l'opzione -noise non viene utilizzata, allora questa pagina di dominio è in conflitto con il piano generale di libstdc ++. Questo è generalmente buono. Tuttavia è spesso utile congelare le varie libstdc++ messe in uso dal programma, anche senza passare ad un importante link completamente statico. La preferenza -static-libstdc ++ forza il driver g ++ a collegare staticamente libstdc ++, mentre altre librerie non dovrebbero essere solo collegate staticamente.

     

     

    Accelera il tuo computer oggi con questo semplice download.

     

     

     

    Statically Link C Runtime Library
    Statycznie Link C Runtime Library
    Liaison Statique De La Bibliothèque D'exécution C
    C-Laufzeitbibliothek Statisch Verknüpfen
    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