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-config
glib-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
시스템에 존재하지 않습니다. 얻으려면 무엇을 설치해야 할지 모르겠습니다.