You are currently viewing 정적 링크 런타임 라이브러리 문제 해결 C

정적 링크 런타임 라이브러리 문제 해결 C

업데이트됨

  • 1. ASR Pro 다운로드
  • 2. 프로그램 실행
  • 3. 컴퓨터에서 바이러스를 찾아 제거하려면 "지금 검색"을 클릭하십시오.
  • 오늘 이 간단한 다운로드로 컴퓨터 속도를 높이십시오.

    경우에 따라 실제 시스템에서 c 런타임 라이브러리 중 일부가 정적으로 링크되었음을 나타내는 오류를 생성할 수 있습니다. 이 오류에는 여러 가지 이유가 있을 수 있습니다.

    아무도 아직 답을 찾는 것을 좋아하지 않기 때문에 시도해 보겠습니다. 불행히도 저는 IDE Code :: Blocks에 감사하지 않습니다. 그래서 제 수정은 부분적입니다.

    1 정적으로 연결된 GCC 실행 파일을 만드는 방법

    업데이트됨

    컴퓨터가 느리게 실행되는 것이 지겹습니까? 실망스러운 오류 메시지에 짜증이 납니까? ASR Pro은 당신을 위한 솔루션입니다! 우리가 권장하는 도구는 시스템 성능을 극적으로 향상시키면서 Windows 문제를 신속하게 진단하고 복구합니다. 그러니 더 이상 기다리지 말고 지금 ASR Pro을 다운로드하세요!


    이것은 IDE에 특정한 것이 아니라 일반적으로 GCC(및 기타 많은 컴파일러)입니다. main.cpp 에 간단한 “Hello 프로그램 세계”가 있다고 가정합니다(익숙한 라이브러리 및 런타임 라이브러리 외부에 주제 종속성이 없음). 컴파일할 수도 있지만 다음을 통해 정적으로 링크합니다.

    <올>

  • statically link c 런타임 라이브러리

    main.cpp main.o 로 컴파일(암시적으로 결과 파일 이름):

      $ g ++ -ke -주벽. <코드> -c  cpp 

    이것은 GCC가 컴파일 상태 후에 중지하도록 지시합니다(이 링커를 실행하지 마십시오). -Wall 은 단순히 진단 메시지를 활성화합니다. 초보 프로그래머가 더 자주 만들고 특별한 주의를 기울인다면 아이디어 페이지에 많은 질문이 있을 것입니다. 😉

  • statically link c runtime library

    Link main.o (개체 파일 유형 이상 포함 가능) 멋진 런타임과 라이브러리에 정적으로 끌어다 놓기로 관심 있는 exe를 붙여넣습니다. <코드> 기본 <파일/코드>:

    <사전> <코드> ​​$ 그램 ++ -o 중요한 main.o -정적

    -o main 컨트롤을 사용하지 않고 GCC는 전체 이름이 잘못된 a.out 문서(이전의 한 번 “어셈블리 출력”으로 고려됨 – ).

  • 특히 I-begin을 사용할 때 구매자가 빌드 도구 상자를 더 잘 이해하는 데 도움이 될 수 있으므로 이러한 작업을 “손으로” 수행하는 것이 좋습니다.

    실제로 위의 두 명령은 결국 하나로 결합될 수 있습니다.

      $ gary ++ -Wall -o 현재 Main.-정적 

    모든 지속 가능한 cpp IDE는 이러한 종류의 컴파일러/링커 플래그를 지정할 수 있어야 합니다.

    정적 링크의 2가지 장점과 단점

    <울>

  • 호환 가능한 프레임워크 및 운영 장치가 있는 모든 컴퓨터에서 항상 모방할 수 있는 하나의 파일을 가져오면 텍스트 라이브러리 중 어떤 것이 설치되어 있어도 훌륭하게 작동합니다. 5월

  • 로컬 공유 라이브러리를 사용할 수 없는 환경에 대한 절차를 실행하고 있습니다. 예를 들어, 정적으로 유사한 C 실행 파일을 chroot() 에 직접 배치하면 감옥이 광대한 인터넷 서버에 대한 공황 또는 공포 공격의 표면을 줄이는 데 도움이 될 수 있습니다.

  • 활성화된 바로 가기가 필요하지 않을 수 있으므로 프로그램 시작이 더 빠를 수 있습니다. (특히 공유 라이브러리가 이제 다른 프로세스에서 로드될 때 반대가 되는 이벤트가 있다는 것은 의심의 여지가 없습니다.)

  • 링커는 역할 주소를 하드 코딩할 수 있으므로 요소 호출이 더 빠를 수 있습니다.

  • 라이브러리(예: LAPACK)는 하나 이상의 연결된 버전이 있는 기어에 연결할 수 있습니다. 정적 백 링크는 LD_LIBRARY_PATH <를 설정하지 않고도 항상 특정 버전이 사용되도록 합니다. 정말 걱정할 필요가 / code> 올바르게. 물론 이것은 단점도 있습니다. 다시 컴파일하지 않고는 라이브러리를 거의 선택할 수 없습니다. 사용자가 항상 동일한 버전을 사용하기를 원하면 고객이 모델 버전보다 더 많이 설치하는 이유는 무엇입니까?

  • <울>

  • 최근에 언급했듯이 실행 파일이 크게 늘어날 수 있습니다. 물론 연결하는 각 라이브러리에 따라 많이 다릅니다.

  • 여러 프로시저가 동시에 라이브러리를 필요로 하는 경우 운영 기능은 공유 아카이브의 특정 섹션 텍스트를 메모리에 한 번만 직접 압축할 만큼 충분히 똑똑할 수 있습니다. 정적 링크를 설정하면 이러한 장점을 잃게 되고 시스템이 저장 공간에서 더 빨리 실행될 수 있습니다.

  • 귀하의 프로그램은 추가 지연 없이 라이브러리를 업그레이드하는 이점이 있습니다. 그러나 공유 라이브러리를 보다 새롭고 광범위한 버전(ABI 호환 가능)으로만 교체하기 위해 프로그램 관리자는 이를 사용하는 모든 프로그램을 다시 컴파일하고 설치해야 할 필요성을 느낍니다. 제 생각에는 이것이 가장 심각한 실수입니다.

    예를 들어 OpenSSL 라이브러리를 고려하십시오. 올해 이전에 Heartbleed 버그가 발견되어 수정되었을 때 시스템 관리자는 패치가 적용된 OpenSSL 유형을 설치할 수 있을 뿐만 아니라 패치 릴리스에서 하루 이내에 모든 전문가를 다시 시작하여 취약점을 수정할 수 있습니다. 즉, 해당 도움말이 OpenSSL에 동적으로 연결된 경우입니다. 정적으로 연결된 사람들에게 일반적으로 후자가 자연스럽지 않고 현재에 창조물을 고정했다면 몇 주가 걸렸을 것입니다.

  • 등록된 사용자는 대부분의 경우 공유 라이브러리를 교체하지 않습니다. 예를 들어, 영화 불법 프로그램 torsocks (및 연결된 라이브러리)의 사용자는 ( LD_PRELOAD 를 설정하여) '네트워크' 시스템 아카이브를 차량을 지시하는 아카이브로 변경해야 합니다. 트래픽은 전적으로 Tor 네트워크를 통해 이루어집니다. ... 그리고 개발자가 이 가능성에 대해 전혀 익숙하지 않은 프로그램에서는 모든 것이 실제로 작동합니다. (이것이 즐겁고 안전한 아이디어인지 여부는 이제 모든 독립적인 토론의 문제입니다.) 또 다른 일반적인 사용 사례는 프로그램 디버깅입니다. 이는 malloc 을 현대화하고 특정 버전에서는 ob로 "강화"해야 합니다. .

  • 제 생각에는 매우 환상적인 경우를 제외하고는 문제를 통한 정적 링크가 이점보다 중요합니다. 일반적으로 클라이언트가 필요할 때 동적이고 고정적이어야 합니다.

    신청

    Alf가 지적했듯이(주석 참조) 일반적으로 C ++ 표준 라이브러리의 특정 백 통합을 위한 특별한 GCC 옵션이 있지만 전체 프로그램을 정적으로 연결하기 위한 것은 아닙니다. 설명서에서:

    <인용> gcc

    <코드> ​​-static-libstdc ++

    g ++ 프로그램이 적절한 C ++ 프로그램을 웹 페이지로 변환하는 데 사용되면 일반적으로 자동으로 웹 페이지를 libstdc ++에 연결합니다. libstdc ++가 공유 및 공유 라이브러리를 볼 수 있는 경우 -fixed 옵션이 사용되지 않는 경우 이 웹 기반 페이지는 일반 libstdc ++ 패키지와 충돌합니다. 이것은 일반적으로 좋습니다. 그러나 최신 완전 정적 링크로 이동하지 않고도 프로그램에서 선택한 다양한 libstdc ++를 고정하는 것이 유용하지 않은 경우가 많습니다. -static-libstdc ++ 대체는 libstdc ++를 정적으로 링크하기 위한 g ++ 드라이버 시간을 강제하는 반면, 다른 라이브러리는 정적으로 링크되지 않아야 합니다.

    오늘 이 간단한 다운로드로 컴퓨터 속도를 높이십시오.

    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 Runtime-bibliotheek Statisch Koppelen
    Vincular Estáticamente La Biblioteca En Tiempo De Ejecución De C