polkit 및 glib에 헤더가 포함된 위치를 수정하는 방법은 무엇입니까?

polkit 및 glib에 헤더가 포함된 위치를 수정하는 방법은 무엇입니까?

PolicyKit을 사용해야 하는 응용 프로그램을 개발 중인데 PolicyKit이 Glib 라이브러리를 사용하는 것 같습니다. PolicyKit을 설치했는데 헤더 위치가 /usr/include/polkit-1/및 에 있습니다 /usr/include/glib-2.0.

헤더의 내부 위치는 /usr/include/, /usr/include/polkit, 입니다 /usr/include/gobject.

컴파일러가 헤더가 있는 위치를 찾을 수 없기 때문에 컴파일할 수 없습니다. 헤더 하나하나 수정해봤는데 시간도 너무 오래 걸리고 언제 완성될지 모르겠네요.

여기서 문제는 설치할 때 에 설치되고 /usr/include/polkit-1, /usr/include/glib-2.0언제 별도로 설치해야 하는지 입니다 /usr/include. 즉, 폴더 가 polkit-1없어야 합니다 glib-2.0. 파일과 폴더를 해당 위치에 배치하여 이 문제를 신속하게 해결하는 방법을 아는 사람이 있습니까?

답변1

자세한 내용은 모르지만 일부 패키지와 라이브러리는 이러한 방식으로 파일을 설치하고 pkg-config올바른 경로를 찾는 데 사용할 수 있도록 경로를 사용하여 파일도 설치합니다.

아직은 사용하지 않았지만 polkit여기서는 라이브러리에서 사용하고 컴파일할 "cflags"를 glib-2.0요청할 수 있습니다 ("cflags"는 C 컴파일러에서 포함 경로와 라이브러리로 컴파일할 항목을 지정하는 데 사용되는 플래그입니다). 추가된 라이브러리) 링크):pkg-configglib-2.0

$ pkg-config --cflags --libs glib-2.0
-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include  -lglib-2.0

내 생각에는 polkit-1$ pkg-config --cflags --libs glib-2.0 polkit-1을 수행할 것 같습니다.

맨페이지의 다음 예에 표시된 대로 이러한 매개변수를 사용하여 컴파일하려면 해당 매개변수를 makefile의 변수에 저장하거나, 결과를 복사하거나, pkg-config셸에서 직접 호출하세요.

cc program.c $(pkg-config --cflags --libs gnomeui)

(실제로 이 예제는 Makefile규칙이지만 쉘에서도 이 작업을 수행할 수 있습니다.)

자세한 내용은 맨페이지를 참조하고 아래에서 사용 가능한 파일과 .pc해당 /usr/lib/pkgconfig파일을 확인하세요./usr/share/pkgconfig/usr/local

AFAIK, 이것은 외부 라이브러리로 컴파일하는 이식 가능한 방법입니다.

답변2

나는 Giles의 의견에 동의하며 njsg의 pkg_command가 훌륭하다고 생각합니다.

LD_LIBRARY_PATH링크 편집기 ld가 활성화된 상태에서 라이브러리 파일을 찾는 또 다른 일반적인 전략은 해당 디렉터리를 ld 매뉴얼 페이지의 환경 변수에 추가하는 것입니다.

~에서만 LD

     The linker uses the following search paths to locate required
       shared libraries:

       1.  Any directories specified by -rpath-link options.

       2.  Any directories specified by -rpath options.  The difference
           between -rpath and -rpath-link is that directories specified by
           -rpath options are included in the executable and used at
           runtime, whereas the -rpath-link option is only effective at
           link time. Searching -rpath in this way is only supported by
           native linkers and cross linkers which have been configured
           with the --with-sysroot option.

       3.  On an ELF system, for native linkers, if the -rpath and
           -rpath-link options were not used, search the contents of the
           environment variable "LD_RUN_PATH".

       4.  On SunOS, if the -rpath option was not used, search any
           directories specified using -L options.

       5.  For a native linker, the search the contents of the environment
           variable "LD_LIBRARY_PATH".

더 많은 옵션을 보려면 매뉴얼 페이지를 읽어보세요.

패키지를 재배열하지 마십시오.

답변3

감사해요. 나는 다음을 수행하여 문제를 해결했습니다.

sudo cp -r /usr/include/polkit-1/polkit /usr/include/polkit
sudo cp -r /usr/include/polkit-1/polkitagent /usr/include/polkitagent
sudo cp -r /usr/include/polkit-1/polkitbackend /usr/include/polkitbackend
sudo cp -r /usr/include/glib-2.0/gio /usr/include/gio
sudo cp -r /usr/include/glib-2.0/glib /usr/include/glib
sudo cp -r /usr/include/glib-2.0/gobject /usr/include/gobject
sudo cp -r /usr/include/glib-2.0/glib-object.h /usr/include/glib-object.h
sudo cp -r /usr/include/glib-2.0/glib-unix.h /usr/include/glib-unix.h
sudo cp -r /usr/include/glib-2.0/glib.h /usr/include/glib.h
sudo cp -r /usr/include/glib-2.0/gmodule.h /usr/include/gmodule.h

혹시 같은 문제를 겪고 계신 분이 사용하신다면 해당 glib-2.0폴더는 계속 사용되므로 삭제하지 마시길 바랍니다.

어쨌든 지금은 그 정보가 누락되어 glibconfig.h시스템에 존재하지 않습니다. 얻으려면 무엇을 설치해야 할지 모르겠습니다.

관련 정보