*-dev
Ubuntu에서 패키지를 사용하는 방법이 혼란스럽습니다 .
libxml2
우분투에서 이 라이브러리를 사용하여 나만의 코드를 개발하고 싶습니다 . 를 사용하여 libxml2-dev를 설치했는데 apt-get
, 헤더 파일이 /usr/include/libxml2/libxml
.
예를 들어 헤더 파일을 포함하려면 parse.h
다음 경로를 사용해야 합니다 libxml2/libxml/parser.h
. 이것은 훌륭하게 작동했지만 일련의 문제에 직면했습니다.
parse.h
개발자가 작성한 또 다른 헤더가 포함되어 있습니다 libxml/xmlversion.h
. 불행하게도 이 경로는 -dev
Ubuntu에서 헤더 파일이 저장되는 방식과 일치하지 않습니다. 즉, xmlversion.h
(적어도 내 프로그램에서는) 로 호출되어야 합니다 libxml2/libxml/xmlversion.h
.
마찬가지로, 기본 검색 경로에도 없는 xmlversion.h
헤더를 호출하면 연속적인 "해당 파일 없음" 오류가 발생합니다.libxml/xmlexports.h
포함할 검색 경로를 수동으로 지정하여 /usr/local/libxml2
이 문제를 해결할 수 있다고 생각했지만 apt-get
, 그러면 적어도 패키지 관리자가 *-dev
패키지를 설치할 때 컴파일러 검색 경로를 올바르게 구성했다고 가정합니다.
*-dev
패키지 사용 시 무엇이 빠졌나요? 이것이 정상적인 동작입니까 아니면 특정 문제입니까 libxml2-dev
? apt
패키지 관리자는 패키지를 설치한 후 나에게 무엇을 하라고 합니까 *-dev
?
답변1
개발 패키지에는 일반적으로 pkg-config
in 가 포함되어 있습니다 /usr/lib/pkgconfig
. 이 프로그램은 라이브러리를 사용하는 데 필요한 C 컴파일러 및 링커 플래그를 쿼리하는 데 사용할 수 있습니다.
libxml2-dev
C 컴파일러 플래그 의 경우 다음이 포함됩니다 -I/usr/include/libxml2
.
$ pkg-config libxml-2.0 --cflags
-I/usr/include/libxml2
이를 사용하는 한 가지 방법은 다음과 같습니다.
gcc $(pkg-config libxml-2.0 --cflags --libs) main.c