내 말은, 내 시스템 패키지를 통해 설치한 오픈 소스 프로젝트에 대해 몇 가지 작업을 할 계획이라는 뜻입니다. 시스템에 설치된 패키지를 유지하면서 개발 중인 버전을 컴파일하고 실행하려는 이러한 상황을 관리하기 위해 제안된 워크플로가 있는지 궁금합니다.
내 질문은 이전에 다른 프로젝트에서 이에 대해 생각해 본 적이 있기 때문에 매우 일반적인 질문이지만 이 특별한 예를 통해 질문을 하게 되었습니다.
제가 언급한 프로젝트는여울. 물론 프로젝트에는 다른 종속성이 있지만 특히 동일한 작성자의 종속성이 있습니다.libtorrent. 요점은 이 두 가지가 모두 내 시스템 패키지보다 최신이므로 두 가지를 모두 가져와 해당 libtorrent 버전에 대해 rtorrent를 빌드해야 한다는 것입니다.
지금까지 나는 libtorrent를 컴파일했지만 make install
내 시스템 패키지와 충돌할 것이라고 생각하기 때문에 아직 실제로 실행하지 않았습니다. 결국 라이브러리 파일을 에 덤프 src/.libs
하지만 헤더 파일에도 액세스해야 한다고 생각합니다. 그렇죠?
이 git cloned rtorrent 구축을 어떻게 진행해야 합니까? 이전에 이런 일을 해본 적이 없으므로 무지함을 용서해 주십시오. 하지만 모든 것이 대본을 중심으로 진행됩니까 ./configure
? 단순히 use를 사용하여 LDFLAGS
라이브러리 경로를 추가 -L
하고 CPPFLAGS
포함 경로(헤더용)를 추가 해야 합니까 -I
? 아니면 libtorrent와 rtorrent의 공통분모를 사용하여 re- ./configure
libtorrent를 사용한 --prefix
다음 make install
libtorrent를 사용해야 합니까?
감사해요!
편집하다: ./configure --help
이러한 "영향력 있는 환경 변수"를 표시합니다.
libtorrent_CFLAGS
C compiler flags for libtorrent, overriding pkg-config
libtorrent_LIBS
linker flags for libtorrent, overriding pkg-config
제가 궁금한 점은 LDFLAGS
and 를 설정하더라도 CPPFLAGS
결국에는 libtorrent가 사용하는 정보를 계속 얻게 되므로 pkg-config
이를 사용해야 한다는 인상을 준다는 것입니다. 이를 사용하면 성공적인 ./configure
실행이 가능해졌고 --prefix
계속 사용할 수 있다고 생각되는 매개변수가 생겼습니다.
답변1
이 문제를 처리하는 두 가지 주요 방법이 있습니다.런타임 시, rpath를 사용하여 연결하거나 LD_LIBRARY_PATH 또는 LD_PRELOAD를 통해 개발 공유 객체를 로드합니다.
컴파일할 때 필요한 -I/-L 명령줄 옵션을 삽입해야 합니다(이미 방법을 찾았습니다).
글쎄, 나에게 효과가 있었던 것은 rpath-linking을 사용하고 pkgconfig를 고수하여 생성된 구성 파일을 패치하여 올바른 경로를 내보내는 것이었습니다. 바라보다이 스크립트더 알아보기.