2009-09-02 3 views
1

일부 사용자 정의 C++ 코드를 작성했는데 우분투에서는 제대로 작동하지만, 내 서버 (centos 5 사용)로 업로드 할 때 오류가 발생하여 라이브러리가 오래되었음을 의미합니다. 나는 주위를 인터넷 검색하고 centos는 최신 라이브러리를 사용할 수 없습니다. 어떻게하면 stl에 대해 컴파일하여 바이너리에 포함될 수 있으며 centos가 이전 라이브러리를 사용하는지 상관하지 않습니다.libC++에서 정적으로 컴파일

P. 소스를 서버에 업로드하고 거기서 컴파일하고 싶지 않습니다. 당신의 연결 단계

답변

1
  1. 당신은 당신의 서버에 라이브러리의 버전에 맞는 컴파일러 박스 우분투에 설치할 수 있습니다

    .

  2. 컴파일 한 시스템에서 가져온 libstdC++로 응용 프로그램을 제공 할 수 있습니다. 단, 링크가 centos '1 대신로드되도록 조정해야합니다.

  3. 정적으로 컴파일 할 수 있습니다. 이렇게하려면, 당신은 당신이 원하는대로 선택 -Bdynamic, -Bstatic -lstdC++ -Wl,

    GCC -lgcc_s -Wl에 g ++에서

을 컴파일러를 전환해야합니다. 접근법 (2)와 접근법 (3)은 의존성 문제를 야기 할 수 있습니다 : 프로젝트 (특히, 정적으로 링크되는 stdC++ 구현은 이제 여러분의 어플리케이션의 일부입니다)는 시스템 라이브러리에 centos. 그러한 기능이 없으면 응용 프로그램이 시작되지 않습니다. 그것이 일어날 수있는 이유는 여러분이 컴파일하고있는 우분투 시스템이 더 새롭고, 호환성이 리눅스 라이브러리에 보존되어 있지 않기 때문입니다.