config, cmake, autoconf 또는 보유한 라이브러리/종속성 일치자의 출력을 기반으로 배포 저장소에서 필요한 패키지/소스를 설치할 수 있는 도구가 있는지 궁금합니다.
즉, 어떤 라이브러리가 필요한지 알지 못한 채 소스에서 프로그램을 빌드하려는 경우 저장소를 기반으로 필수 패키지를 설치하여 라이브러리 종속성을 해결할 수 있는 도구가 있습니다.
나는 당신에게 임의의 예를 들겠습니다.
얼마 전에 나는 사용하고 싶었습니다.오스트리아 섹션. Ubuntu 14.04용으로 패키징되지 않았기 때문에 직접 빌드해야 했습니다.
추가 정보에는 ./configure를 먼저 실행해야 한다고 나와 있습니다. ./configure를 한 번 실행했는데 "popt" 라이브러리를 찾을 수 없다는 오류가 발생했습니다. 나는 인터넷을 찾아 이 라이브러리에 어떤 deb 패키지를 설치해야 하는지 알아냈고, 그것을 설치하고 ./configure를 다시 실행했습니다.
두 번째로, 무료 라이브러리를 찾을 수 없다는 오류가 다시 발생합니다. 다시 한 번 필요한 라이브러리를 찾았고 Ubuntu의 경우 binutils-dev라는 것을 알았습니다. 그런데 설치하려고 하면 작동하지 않습니다. 흥미롭게도 이 라이브러리는 ubuntu 12.04용 binutils-dev 패키지에 있지만 ubuntu 14.04용 libiberty-dev 패키지에는 없습니다.
세 번째로, 마침내 프로그램을 컴파일하고 실행할 수 있었습니다.
답변1
아니요, 종속성을 완전히 자동으로 추론할 수는 없습니다.
포장해 놓으면 apt-get build-dep oprofile
도움이 될 것 같아요 . 다른 곳에서 패키지를 찾을 수 있으면 그곳에서 종속성을 찾을 수 있습니다. 예를 들어 패키지가 배포판의 다음 버전에 존재하는 경우입니다. 예를 들면 다음과 같습니다.
http://archive.ubuntu.com/ubuntu/pool/universe/o/oprofile/oprofile_1.0.0-0ubuntu9.dsc
(직접 컴파일할 계획이라면 먼저 최신 버전으로 업그레이드하는 것을 고려해 보세요!)
그 외에도 그것을 알아내려면 약간의 경험이 필요합니다. configure
불행히도 스크립트는 패키지 이름을 알려주지 않지만 일반적으로 쉽게 찾을 수 있습니다. 배포 웹 페이지의 검색 기능을 사용할 수도 있습니다. 특정 파일 이름이 포함된 패키지를 알려줄 수 있습니다.
configure
계속해서 시도하는 것보다 configure.ac
스크립트를 생성한 파일을 살펴보는 것이 더 편리할 수 있습니다(보통많은더 짧음). 일부 선택적 기능은 특정 라이브러리가 설치되고 일부 플래그가 지정된 경우에만 사용할 수 있습니다.
LIBERTY_LIBS="-liberty $DL_LIB $INTL_LIB"
BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $Z_LIB"
POPT_LIBS="-lpopt"
일반적인 라이브러리 종속성입니다.
AC_ARG_ENABLE(gui,[ --enable-gui compile with gui component (qt3|qt4|yes|no),
if not given or set to yes, gui defaults to qt3],, enable_gui=qt3)
GUI를 원할 경우 QT 종속성을 고려할 수도 있음을 의미합니다.