저는 최신 버전의 glib에 대해 컴파일해야 하지만 Ubuntu 11.10(함께 제공되지 않음)에서도 실행해야 하는 소프트웨어를 개발 중입니다. 내 첫 번째 생각은 버전이 이론적으로 호환 가능하기 때문에 glib를 백포트하고 교체하는 것이었지만 이로 인해 몇 가지 문제가 발생했습니다(특히 Unity가 제대로 작동하지 않음).
확실한 해결책은 Ubuntu 12.04를 사용하는 것이라는 것을 알고 있지만 지금은 해당 옵션이 없습니다(작업 중이지만).
이 문제를 해결할 수 있는 합리적인 방법이 있나요? 이제 나는 glib를 컴파일하고, tar
컴파일한 다음 수동으로 C_INCLUDE_PATH
및 LD_LIBRARY_PATH
. 불행하게도 glib는 해당 버전에 대해 그다지 구체적이지 않기 때문에 컴파일된 라이브러리를 패키징할 수도 없다고 생각합니다(단지 glib-2.0.so
).
이것이 이 상황에서 tar
취할 수 있는 최선의 접근 방식입니까 ?
답변1
위에서 언급한 환경 변수 /usr/local/lib
아래에 새 버전의 glib를 설치하거나 /usr/local/lib64
사용하는 것이 좋습니다 .LD_LIBRARY_PATH
실제로 이것이 기본 위치인 것 같습니다. ./configure --help
glib-2.33.8의 출력 에서 :
By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
바라보다이 우분투 포럼 주제자세한 내용은.
답변2
비슷한 문제가 있어서 컴파일해야 했어요모뎀 관리자, 이를 위해서는 운영 체제에 새 버전의 GLib-2를 설치해야 하며, 이는 GLib-2
패키지 관리자( Ubuntu 18.04
)를 통해 사용할 수 없습니다. 또한 창 관리자(일부 종속성이 있다고 가정함)를 중단하고 싶지 않습니다 glib-2
.
나에게 맞는 최신 버전의 GLib-2로 컴파일하는 단계:
- 소스에서 컴파일됨
glib
(2022년 6월 2일, 여기에 호스팅됨:https://gitlab.gnome.org/GNOME/glib/). 최신 버전은 빌드 시스템을 사용하며(따라서 빌드 시스템이 없으면 먼저 설치해야 함meson
) 다음과 같이 컴파일됩니다.meson
meson build
cd build
meson compile
- meson을 사용하여 일부 로컬 폴더에 glib를 설치합니다(기존 GLib-2 파일을 덮어쓰므로 기본 위치와 다름).
meson install --destdir /local/path/to/where/you/want/GLib-2/to/be/installed
/local/path/to/where/you/want/GLib-2/to/be/installed
다음과 같이 사용하겠지만 명령에서는 경로로 ${install_dir}
바꿔야 합니다 .${install_dir}
*.pc
GLib-2 사용자 정의 설치의 PACKAGE_CONFIG 파일을 수정합니다 . 디렉토리${install_dir}/usr/local/lib/x86_64-linux-gnu/pkgconfig
:
gio-2.0.pc
gio-unix-2.0.pc
glib-2.0.pc
gmodule-2.0.pc
gmodule-export-2.0.pc
gmodule-no-export-2.0.pc
gobject-2.0.pc
gthread-2.0.pc
모든 파일은 접두사로 시작됩니다.
prefix=/usr/local
로컬 설치의 접두사로 바꿔야 합니다.
prefix=${install_dir}/usr/local
마지막으로 ModemManager를 호출하는 구성 단계는 다음과 같습니다.
PGK_CONFIG=${install_dir}/usr/local/lib/x86_64-linux-gnu/pkgconfig meson build
이렇게하면 컴파일 할 수 있습니다모뎀 관리자운영 체제에서 제공하는 것보다 최신 버전의 GLib-2를 사용하십시오.