소스 패키지에서 rrdtool을 컴파일하려고 합니다. 저는 RPM 패키지를 사용하지 않으므로 패키지 설치를 요청하지 마세요. ;)
rrdtool 이전에 필요한 모든 소프트웨어를 컴파일했습니다.http://oss.oetiker.ch/rrdtool/doc/rrdbuild.en.html
rrdtool의 ./configure가 가능합니다.
하지만 그렇게 하면 다음과 같은 오류가 발생합니다.
CC rrdcached-rrd_daemon.o
rrd_daemon.c:108:27: erreur: glib-2.0/glib.h : Aucun fichier ou dossier de ce type
rrd_daemon.c:246: erreur: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
rrd_daemon.c: In function âadd_response_infoâ:
rrd_daemon.c:540: attention : implicit declaration of function âva_startâ
rrd_daemon.c:540: attention : nested extern declaration of âva_startâ
rrd_daemon.c:546: attention : implicit declaration of function âva_endâ
rrd_daemon.c:546: attention : nested extern declaration of âva_endâ
[...]
내 시스템의 /usr/local/glib-2.34.0/glib/glib.h에 glib-2.0/glib.h가 있습니다.
glib 경로가 포함된 환경 변수 PKG_CONFIG_PATH를 설정했습니다. /usr/local/glib-2.34.0/lib/pkgconfig/
나는 그것에 관한 몇 가지 스레드를 보았지만 아무것도 내 사건에 도움이 되지 않았습니다.
config.log를 보면 모든 것이 괜찮은 것 같습니다!
답변1
"관리 문서 또는 CE 유형 파일" == "해당 파일이나 디렉터리가 없습니다."
PKG_CONFIG_PATH
.pc
패키지 자체 대신 추가 파일을 찾을 수 있도록 추가할 (기본값이 아닌) 경로가 포함되어 있습니다 . 해당 디렉토리에 올바른 파일이 있으면 .pc
제대로 작동할 것입니다.
다음 출력을 확인하십시오.
pkg-config --cflags --libs glib-2.0
(설정 유무에 관계없이 PKG_CONFIG_PATH
)
그것은 당신의glib-2.0포함 및 라이브러리의 설치 경로는 내 것입니다 /usr/local/
.
-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include \
-L/usr/local/lib -lglib-2.0
파일이 잘못된 경우 확인하십시오 .pc
.
하지만, 귀하가 제공한 경로는 glib.h
전체 설치보다 압축을 푼 소스 코드와 더 비슷해 보입니다.glib-2.0. glib-2.0을 설치하고 빌드하셨나요? 지침 URL을 따라 빌드한 경우 올바른 것이 아닌 것으로 보이며 단계를 반복해야 합니다.
특히 이러한 패키지 중 일부의 일반적인 구성/만들기/설치를 수행하지 않을 이유가 없습니다 /usr/local
.glib-2.0,주쿠,라이브러리 파일,libXML2-- 이미 설치한 것과 충돌하지 않는 한.
RRDtool의 빌드 문서 뒤에 있는 논리는 가능한 한 자체 포함되도록 /tmp
모든 것을 빌드하고 설치하는 것입니다. /opt
상당히 강력한 접근 방식일 수 있지만 몇 가지 단점이 있습니다(모든 종류의 마법 같은 환경 변수를 설정해야 한다는 점 포함).
고쳐 쓰다:문제는 glib-2.0의 설치 경로가 rrdtool에 사용된 포함 경로와 충돌한다는 것입니다.
/usr/local/glib-2.34.0/
빌드 에 설치할 때 이 경로를 .pc
지정하십시오 ./usr/local/glib-2.34.0/include/glib-2.0
이미 하위 디렉터리가 포함되어 있습니다. glib-2.0
따라서 rrdtool이 이를 포함하려고 하면 <glib-2.0/glib.h>
실패합니다. 나는 이것이 glib-2.0이 /usr
"예상" 위치나 그 아래에 설치될 때 /usr/local
(아마도 빌드 가이드 경로를 완전히 사용할 때) 가려지는 rrdtool 문제라고 생각합니다 .
에 설치하는 경우 /usr/local
경로를 포함하면 " "이 올바르게 작동 /usr/local/include
합니다 .#include <glib-2.0/glib.h>
수정 사항으로 모든 종속 항목을 빌드하고 설치하는 것이 좋습니다 /usr/local
(그런 다음 설정만 하면 됩니다 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
).또는rrdtool 빌드 지침을 엄격히 따르십시오.또는CFLAGS
를 실행하기 전에 glib-2.0이 설치된 위치를 설정할 수 있습니다 configure
. 예를 들면 다음과 같습니다.
export CFLAGS="-I/usr/local/glib-2.34.0/include"
(즉, 보고서의 상위 디렉토리 pkg-config --cflags glib-2.0
)
컴파일이 중단되면 다음 명령을 실행하여 무슨 일이 일어나고 있는지 더 잘 알 수 있습니다.
make AM_DEFAULT_VERBOSITY=1
오류가 발생한 후 이번에는 다시 시도하고 사용된 명령이 인쇄되므로 gcc -I
플래그를 확인할 수 있습니다.
알았어, 찾았어오류 보고서, 수정되었습니다(제목에도 불구하고 "비표준 glib 위치를 사용하여 빌드 수정"약간 오해의 소지가 있음). 그러나 그 이후로는 새로운 안정 릴리스가 없습니다. FWIW, 사용자 목록에 동일한 문제로 보이는 몇 가지 답변되지 않은 질문이 있습니다.