플러그인 라이브러리가 디스크에서의 위치를 ​​식별하는 표준/허용된 방법이 있습니까?

플러그인 라이브러리가 디스크에서의 위치를 ​​식별하는 표준/허용된 방법이 있습니까?

플러그인 아키텍처를 사용하여 C 프로그램을 개발 중입니다. 우리는 두 .rpm패키지를 모두 빌드하고 패키징합니다 .deb.

일부 플러그인에는 해당 플러그인에서만 사용할 수 있는 이미지 파일이나 스크립트 파일과 같은 추가 비바이너리 리소스가 있습니다. 이러한 추가 리소스는 플러그인 파일과 동일한 디렉터리에 있습니다 .so. 따라서 플러그인은 관련 파일을 열려면 디스크의 위치와 동일한 디렉터리에 있어야 합니다.

이를 수행하는 표준 또는 적어도 다소 관용적인 방법이 있습니까?

특히 /usr/lib/<foo>/plugins일부 배포판 에서는 /usr/lib64vs./usr/lib

또한 개발 중에는 프로그램(및/또는 플러그인)이 표준 위치에 설치되지 않습니다. 이는 사용자 홈 폴더 내의 소스 코드 하위 디렉터리에서 실행되며, 이 경우 플러그인 폴더는 개발 중인 바이너리와 약간 다른 상대 위치에 있습니다.

편집하다: 구체적인 예를 들자면, 프로젝트의 소스 코드 트리에는 디렉터리가 foo있습니다 plugins. 포함된 표준 플러그인 중 일부가 이 디렉토리 foo에 저장됩니다 . plugins플러그인 중 하나가 pyconsole이에 의존하며 foo_pycon.py, 이는 plugins\pyconsole\디렉토리에도 있습니다.

개발 중에 다양한 지점의 다양한 작업을 위해 홈 디렉터리에 여러 개의 저장소 복사본이 있을 수 있습니다. 작업 복사본은 에 있을 수 있습니다 ~\src\foo_branch\.

foo저는 로컬로 구축된 인스턴스를 인스턴스라고 부릅니다 ~\src\foo_branch\release_x86_64\bin\foo. foo을 포함하여 모든 플러그인을 상대 하위 디렉터리에 배치합니다 ~\src\foo_branch\release_x86_64\lib\plugins\pyconsole.so.

pyconsole.so이 특정 인스턴스가 자신의 인스턴스를 열고 사용할 수 있도록 위치를 알려주 는 표준 또는 관용적 방법이 있습니까 foo_pycon.py?

패키지를 통해 설치하는 경우 상대 경로가 다를 수 있습니다. 설치된 바이너리의 위치 와 마찬가지로 /usr/bin/foo플러그인을 /usr/lib[64]/foo/plugins.

관련 정보