2014-05-19 2 views
1

내 프로그램에서 xxx.so를 가져와야하며이 xxx.so 파일은 Python2.4에서 컴파일됩니다.동적 라이브러리 embed C (.so 파일)을 다른 Python 버전간에 호환하는 방법

내 프로그램을 Python2.7 & Python2.4에서 실행하고 싶지만 Python2.7에서 xxx.so를 가져올 때 오류가 있습니다. Python 버전과의 불일치로 인한 것입니다.

내 질문 : 각 Python 버전과 일치하도록 xxx.so 파일을 컴파일해야합니까?

답변

1

확장 모듈은 버전에 따라 다릅니다. 서로 다른 버전의 파이썬에는 다른 버전의 확장 모듈이 필요합니다. 대상 Python 버전의 헤더와 라이브러리에 링크 된 소스에서 확장 모듈을 컴파일해야합니다.

+0

이 문제를 해결하기위한 일반적인 문제는 무엇입니까? 모든 xxx.so 파일을 포함하고 sys.version을 사용하여 해당 파일을 가져 오도록 결정하십시오. – Vatel

+0

정상적인 해결책은 소스에서 빌드하거나 다른 파이썬 버전에 맞는 다른 바이너리 설치 패키지를 제공하는 것입니다 –

1

예, 동일한 컴파일러을 사용하여 일치하는 Python 버전 으로 컴파일해야 ABI 호환성을 보장 할 수 있습니다.

컴파일러가 운영체제에 번들되어있는 * nix 플랫폼에서는 문제가되지 않지만 Windows에서는 다양한 컴파일러 (mingw, visual studio 등)가 사용되는 두통이 생길 수 있습니다.

Python C API 문서는 공식 빌드에서 사용하는 컴파일러에 대해 설명합니다.