2013-06-07 1 views
1

정적 및 동적 라이브러리가 함께 제공되는 Linux C SDK를 다운로드했습니다. Readme에서 다음과 같이 말합니다.다중 힙을 초래하는 여러 GCC 버전으로 인해 충돌이 발생합니까?

이 SDK는 gcc 버전 4.5.1로 컴파일되었습니다.

응용 프로그램이 다른 두 개의 libcs를로드하게 될 것이므로 은 두 개의 다른 힙을 생성하므로이 SDK 바이너리를 다른 gcc 버전과 함께 사용해서는 안됩니다. 다른 힙에 의해 할당 된 메모리를 확보하려고 할 때 혼합 힙을 사용하면 응용 프로그램 이 충돌합니다.

나는 이런 식으로 들어 본 적이 없으며 웹 검색에서 확인을 드리지 못했습니다. 제가 찾은 것은 ABI에 관한 것이 었습니다. 그러나 제가 이해할 때 이것은 라이브러리가 전혀 작동하지 않는다는 의미에서 GCC 버전과 호환되지 않을 수도 있다는 것을 의미합니다. 이것은 libc 버전이나 힙과 아무런 관련이 없습니다.

그렇다면 Readme에서 말하는 것은 사실입니까? 또는 좀 더 일반적인 용어로 : 내가 인터넷에서 다운로드 한 라이브러리를 GCC 버전으로 컴파일하려고 시도해서는 안된다? 다른 GCC 버전으로 컴파일 된 여러 라이브러리를 사용하려면 어떻게해야합니까?

모두에게 감사, 모리츠

인해 SDK를 구축하는 데 사용되는 최적화에
+3

나는 비슷한 것을 들어 본 적이 없습니다. 아마도 SDK를 제거하고 문제를 일으키지 않는 것을 얻으십시오. –

+1

다른 libc 및 gcc 버전으로 컴파일 된 코드를 문제없이 실행했습니다. GCC의 라이브러리와 특정 버전과 관련이있을 수 있습니다. readme는 메모리를 해제하는 데만 사용되므로 운이 좋으면 메모리를 할당 한 동일한 힙이 메모리를 해제하고 드물지만 버그를 추적하기가 어렵 기 때문에 일반적으로 문제가되지 않을 수 있습니다. – Perkins

+0

http://stackoverflow.com/helpcenter/dont-ask – xaxxon

답변

-1

그것은 수 있습니다. 혼합 된 경우 최적화 된 바이너리는 충돌 가능성이 더 큽니다.

관련 문제