2014-04-01 2 views

답변

0

이 질문에 두 가지 답이있다 : 없음 예는.

라이브러리에 부 업데이트 만있는 경우 또는 새 기능이 이전 버전과 호환되도록 추가 된 경우 아무 것도 수행하지 않아도됩니다. 물론 새로운 기능을 사용하고 싶지 않다면 코드를 수정하고 다시 컴파일해야합니다. 라이브러리가 하지 하위 호환성을 일부 변경을 한 경우 반면에

, 다음 수도 적어도 프로젝트를 다시 연결해야합니다. 그러나 이전 버전과 호환되지 않는 라이브러리를 설치하면 운영 체제가 이전 버전을 유지할 수 있으므로 응용 프로그램이 이전 버전을 사용할 수 있으므로 아무 작업도 수행하지 않아도됩니다.

1

메인 프로그램과 동적으로 연결된 공유 라이브러리 인 경우 메인 앱과 라이브러리간에 공유되는 헤더를 업데이트 한 경우를 제외하고는 그렇지 않습니다.

개체 크기가 업데이트되었을 수 있습니다 당신이 당신의 메인 프로그램에 정적 할당을 사용하는 경우, 그 이상한 문제 (새 개체 크기가 오버플로) 만들 수 있습니다 (일반적으로 구성원을 추가하여)

int main(int argc, char * argv[]) 
{ 
    MyClass list[12]; 

    return 0; 
} 

변경 개체의 크기를 동적 라이브러리에 MyClass가 심각한 문제가 될 것입니다!

+0

그래서 결론을 내리면 어떤 경우에는 ** 다시 컴파일해야합니다. –

1

당신이로 읽는 더해야 할 두 가지 키워드가 있습니다 : 컴파일 된 프로그램이 여전히 문제없이 실행된다는 것을 의미합니다 프로그램이 여전히 라이브러리를 업데이트 한 후 컴파일 것을 의미 소스 호환성, 및 바이너리 호환성는, 라이브러리를 업데이트 한 후

대부분의 주요 라이브러리 (예 : glibc 또는 libpng)는 긴 버전 범위 (대개 주 버전의 모든 릴리스는 이진 호환 가능)에서 바이너리 호환이 가능하며 거의 소스 호환성을 손상시키지 않습니다.

이진 및 소스 호환성을 테스트하는 자동화 도구가 있습니다 (예 : this one).

관련 문제