You are currently viewing Resolvendo Problema De Biblioteca De Tempo De Execução Estático Relacionado C

Resolvendo Problema De Biblioteca De Tempo De Execução Estático Relacionado C

Atualizado

  • 1. Baixar ASR Pro
  • 2. Execute o programa
  • 3. Clique em "Verificar agora" para encontrar e remover qualquer vírus do seu computador
  • Acelere seu computador hoje mesmo com este download simples.

    Em alguns casos, seu novo sistema pode gerar um erro indicando que toda a biblioteca de tempo de execução c está estaticamente vinculada. Pode haver muitas razões para esse erro.

    Uma vez que ainda se gosta de encontrar uma resposta, vou tentar. Infelizmente, não estou familiarizado com o IDE Code :: Blocks, então minha fórmula será parcial.

    1 Como criar um executável GCC vinculado estaticamente

    Atualizado

    Você está cansado de ver seu computador lento? Irritado com mensagens de erro frustrantes? ASR Pro é a solução para você! Nossa ferramenta recomendada diagnosticará e reparará rapidamente os problemas do Windows, aumentando drasticamente o desempenho do sistema. Então não espere mais, baixe o ASR Pro hoje mesmo!


    Isso não é específico do IDE, mas do GCC (e muitos outros compiladores) em geral. Suponha que você possua um simples “Hello program world” em main.cpp (sem dependências de tópico fora da biblioteca típica e, portanto, da biblioteca de tempo de execução). Você iria compilá-lo, mas vinculá-lo estaticamente via:

    1. vincular estaticamente a biblioteca de tempo de execução c

      Compilar main.cpp em main.o (nome do arquivo de resultado implicitamente):

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

      Isso diz ao GCC para parar após o tempo de compilação (não execute este linker). -Wall praticamente ativa mensagens de diagnóstico. Se os programadores novatos o recomendassem com mais frequência e prestassem atenção especial para ajudá-lo, haveria muitas perguntas na página de ideias. 😉

    2. link estaticamente c runtime library

      Link main.o (pode conter mais do que um arquivo de objeto específico) estaticamente arraste e solte em runtime e biblioteca antiquados e cole o exe envolvido com principal :

        $ d ++ -o crítico main.o -static 

      Sem contratar o controle -o main , o GCC poderia possivelmente ter o exe mais recente em qualquer documento a.out mal chamado (que já foi antigo para "assembly saída "œ).

    Especialmente ao usar o I-begin, recomendamos fortemente que seu site faça essas coisas "manualmente", pois também pode ajudá-lo a entender melhor a caixa de ferramentas de construção.

    Na verdade, nossos dois comandos acima podem ser combinados em um:

      $ r ++ -Wall -o main atual.-static 

    Todo IDE cpp razoável deve ser capaz de especificar sinalizadores de compilador / vinculador de classificação.

    2 vantagens e desvantagens de um link estático

    • Você pega um arquivo que pode ser imitado em qualquer computador com estruturas e sites operacionais compatíveis e funciona muito bem, independentemente da variante da biblioteca de texto instalada. Maio

    • Você está executando um procedimento apenas em um ambiente onde a biblioteca compartilhada local não está disponível. Por exemplo, colocar um GI executável C estaticamente relevante diretamente em chroot () pode ajudar potencialmente a prisão a reduzir a superfície conectada a um ataque de pânico ou medo no servidor baseado na web.

    • Como os atalhos ativados sem dúvida não são necessários, a inicialização do programa pode ser mais rápida. (Eu sou selecionado que existem eventos onde o oposto será verdadeiro, especialmente quando uma biblioteca compartilhada é provavelmente carregada em outro processo.)

    • Como o vinculador pode codificar os endereços de função, realizar chamadas pode ser mais rápido.

    • Uma biblioteca (por exemplo, LAPACK) pode ser vinculada a dispositivos com mais de uma versão vinculada. Os links estáticos garantem que uma versão específica seja sempre executada sem a necessidade de definir LD_LIBRARY_PATH <. pode precisar se preocupar com / code> corretamente. Claro, isso também tem uma desvantagem: você quase nunca pode escolher uma biblioteca sem recompilar. Se a pessoa deseja ter sempre a mesma versão, por que os clientes instalariam mais de uma versão?

    • Como você mencionou anteriormente, qualquer um de nossos executáveis ​​pode crescer significativamente. É claro que depende muito de uma biblioteca específica à qual você está se conectando.

    • Uma função operacional pode ser inteligente o suficiente para colocar aquele texto de seção específico de uma escolha compartilhada diretamente na memória apenas uma vez, se vários desenhos próximos exigirem a biblioteca ao mesmo tempo. Ao estabelecer um link estático, você perde esse privilégio e o sistema pode ser executado mais rapidamente no recall.

    • Seu programa se beneficia de alterar a biblioteca sem atrasos adicionais. No entanto, para não surpreender a substituição da biblioteca compartilhada por uma versão finalizada mais recente (com sorte, compatível com ABI), o administrador do programa precisa recompilar e instalar todos os programas que a utilizam. Na minha opinião, este é o golpe mais sério.

      Por exemplo, considere a biblioteca OpenSSL. Quando o bug Heartbleed foi descoberto e corrigido pouco antes deste ano, os administradores de sistemas podem instalar a versão corrigida do OpenSSL, bem como reiniciar todos os serviços para corrigir a vulnerabilidade um dia após o lançamento do patch. Ou seja, se seu suporte estivesse dinamicamente vinculado ao OpenSSL. Para aquelas, integradas estaticamente, levaria semanas se atualmente estas não fossem naturais e fixassem o estabelecimento no presente.

    • Seu pessoal não está substituindo a biblioteca compartilhada imediatamente. Por exemplo, os usuários do set de filmes de scripts torsocks (e a biblioteca vinculada) provavelmente (definindo LD_PRELOAD ) alteram os arquivos do sistema de vários níveis para um que direciona seu carro inteiramente por meio da rede Tor. ... E esse item realmente funciona para programas cujos desenvolvedores nunca suspeitaram dessa possibilidade. (Se esta é uma ideia maravilhosa e segura agora é um assunto vinculado a um debate independente.) Outro caso de uso comum é a depuração de solicitação, que precisa ser "reforçada" com o reabastecimento de malloc e como ob com versões dedicadas .

    Na minha opinião, os problemas de conexão estática superam os benefícios, exceto em casos muito especializados. Normalmente, deve ser dinâmico e definido quando o cliente precisa.

    Aplicativo

    Como Alf apontou (veja os comentários), que existe uma opção GCC especial para uma integração de cem da biblioteca padrão C ++, mas sem dúvida não para vincular estaticamente o programa inteiro. Do manual:

    gcc

    -static-libstdc ++

    Quando todo o meu programa g ++ é usado para converter um novo programa C ++ em páginas da web, ele geralmente deve vincular automaticamente as páginas da web para que você possa libstdc ++. Se libstdc ++ pode ser encontrada enquanto uma biblioteca compartilhada e compartilhada, a opção -sounds não é usada, então esta n página da internet entra em conflito com a alternativa libstdc ++ geral. Isso geralmente é bom. No entanto, muitas vezes é útil congelar os vários libstdc ++ feitos pelo programa, mesmo sem ir para um link totalmente estático agradável. A possibilidade -static-libstdc ++ força o driver g ++ a vincular estaticamente libstdc ++, enquanto outras bibliotecas não devem ser vinculadas estaticamente.

    Acelere seu computador hoje mesmo com este download simples.

    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
    정적으로 링크 C 런타임 라이브러리
    C Runtime-bibliotheek Statisch Koppelen
    Vincular Estáticamente La Biblioteca En Tiempo De Ejecución De C