2011-02-10 3 views
3

정적 라이브러리를 생성하는 autotools를 사용하여 C로 작성된 프로젝트에서 작업합니다. 또한 동일한 프로젝트의 맥락에서 C API에 파이썬 인터페이스를 제공합니다. 필자는 휴대용 라이브러리에 정적 라이브러리와 동적 라이브러리를 모두 제공 할 수 있도록 최근까지 프로젝트에서 libtool을 소개하기까지는 허락을받지 못했습니다. 지금까지 distutils를 사용하여 파이썬 공유 모듈을 만들고 Python 모듈을 프로젝트의 C 정적 라이브러리에 연결했습니다. 다시 말하면, 내가 ecuation에 libtool/shared 라이브러리를 소개 할 수 없었기 때문입니다. 지금, 나는 다음과 같은 두 가지 문제 상황에 직면하고있다에서 libtool을 넣어 원하는 : 나는의 distutils와 autotools를가 서로 얘기하지 않기 때문에의의 distutils를 사용하여 파이썬 공유 모듈을 생산하고 유지하는 경우libtool 파이썬 모듈 연결 및 설치

  1. 을, I distutils에게 어떤 C 라이브러리를 연결할 지 알려줄 필요가있다. 지금까지는 libtool이 생성 할 수있는 라이브러리의 이름과 경로를 얻기 위해 .la 파일을 구문 분석하는 방법을 생각할 수 없습니다. libtool은 시스템에서 어떤 유형의 라이브러리를 생성 할 수 있었는지에 관한 정보를 제공합니까?

  2. Python 모듈 제작을 automake로 옮기면 설치 프로세스가 완료 될 때까지 괜찮습니다. 나는 libtool에게 libtool에게 lib 폴더, 즉 'lib/python2.5/site-packages/myproject'라는 다른 파이썬 모듈을 원한다고 말하고 싶지 않습니다. 나는 을 시도했지만 라이브러리가 잘못된 rpath (빌드의 것, 설치되지 않은 것)를 가지기 때문에 제대로 작동하지 않았다. 왜 내가 그걸 원하니? 거기에도 .py 래퍼가 있기 때문에. 그래서, libtool에게 다른 곳에서 모듈을 설치하고 rpath를 적절히 설정하도록 지시하는 방법이 있습니까?

난 그냥 우아한 솔루션을 찾고 것 같아, 아니면 해결책이있다 그것은 간단하지만 충분한 경험이 아니에요 나는 그것을 볼 수 없습니다. 어떤 도움이 필요합니까?

P. 옵션 2를 선호 할 수 있습니다. 그런 식으로 작동시킬 수 있다면 autotools에서 distutils로 정보를 전달하지 않아도됩니다.

답변

3

http://www.gnu.org/software/hello/manual/automake/Python.html을 읽으셨습니까? pyexecdir을 모듈을 설치할 위치로 사용할지 여부를 알 수 없습니다. 그렇다면 AM_PATH_PYTHONconfigure.ac에 추가하십시오. 뭔가가 설치 될 위치를

어쨌든, automake에에서 _PRIMARY 전에 이름이 지정 lib_LTLIBRARIES$(libdir)에 라이브러리를 설치합니다, pyexec_LTLIBRARIES 등등 bin_PROGRAMS$(bindir)에 설치됩니다, $(pyexecdir)에 설치 한 것입니다.

+0

오, 멋지다! 그게 내가 필요한거야. 나는 configure.ac에 AM_PATH_PYTHON을 가지고 있었지만, 나는 pyexecdir이나 pkgpyexecdir을 알지 못했다. 이제 pkgpyexec_LTLIBRARIES를 사용하면 Python 모듈을 올바른 rpath가있는 'lib/python2.5/site-packages/myproject'로 보냅니다. 고맙습니다 ! – Cricri

+0

또한 installdir_PRIMARY 알림을 보내 주셔서 감사합니다. 이것이 실제로 실제로하고있는 일이며 완전히 잊어 버렸습니다. – Cricri