![##](https://linux55.com/image/212656/%23%23.png)
다음 지침에 따라 소스에서 gpgme-1.18을 컴파일하려고 합니다.https://linuxfromscratch.org/blfs/view/systemd/postlfs/gpgme.html
다음 오류로 인해 컴파일이 실패합니다.
Making all in python
make[2]: Entering directory '/home/brad_b82/gpgme-1.18.0/lang/python'
Making all in .
make[3]: Entering directory '/home/brad_b82/gpgme-1.18.0/lang/python'
set -e ; for PYTHON in /usr/bin/python3.10; do \
CPP="gcc -E" \
CFLAGS="-g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wno-format-y2k -Wno-missing-field-initializers -Wno-sign-compare -Wno-format-zero-length -Wno-format-truncation -Wno-sizeof-pointer-div" \
srcdir="." \
top_builddir="../.." \
$PYTHON setup.py build --verbose --build-base="$(basename "${PYTHON}")-gpg" ; \
done
running build
Using gpgme.h from ../../src/gpgme.h
Please use --libdir=LIBDIR option or set PKG_CONFIG_LIBDIR
Or set PKG_CONFIG_PATH
Could not find gpg-error-config. Please install the libgpg-error development package.
make[3]: *** [Makefile:758: all-local] Error 1
make[3]: Leaving directory '/home/brad_b82/gpgme-1.18.0/lang/python'
make[2]: *** [Makefile:475: all-recursive] Error 1
make[2]: Leaving directory '/home/brad_b82/gpgme-1.18.0/lang/python'
make[1]: *** [Makefile:460: all-recursive] Error 1
make[1]: Leaving directory '/home/brad_b82/gpgme-1.18.0/lang'
make: *** [Makefile:538: all-recursive] Error 1
컴퓨터는 거짓말을 한다! 이전에는 구성 프로세스 중에 스크립트에서 gpg-error-config를 볼 수 있었습니다.
checking for gpg-error-config... /usr/bin/gpg-error-config
checking for gpgrt-config... /usr/bin/gpgrt-config
configure: Use gpgrt-config with /usr/lib as gpg-error-config
checking for GPG Error - version >= 1.36... yes (1.46)
configure: Use gpgrt-config as libassuan-config
경로 위치를 확인할 수 있습니다.
brad_b82 [ ~ ]$ which gpg-error-config
/usr/bin/gpg-error-config
brad_b82 [ ~ ]$
gpg-error-config는 심볼릭 링크입니다:
brad_b82 [ ~ ]$ file /usr/bin/gpg-error-config
/usr/bin/gpg-error-config: symbolic link to gpgrt-config
brad_b82 [ ~ ]$
gpg-error-config를 실행하면 다음과 같은 결과가 나타납니다.
brad_b82 [ ~ ]$ gpg-error-config
Please use --libdir=LIBDIR option or set PKG_CONFIG_LIBDIR
Or set PKG_CONFIG_PATH
brad_b82 [ ~ ]$
내 문제를 어디서 해결해야 할지 모르겠습니다. 어떤 도움이라도 대단히 감사하겠습니다!
##
Brunson에 관한 편집 #1
libgpg-error의 위치를 확인했습니다. 그래서
동일한 라이브러리를 /usr/share/libgpg-error/에 복사했는데, 문서에 따르면 이 위치가 기본 위치입니다.
Making all in python
make[2]: Entering directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang/python'
Making all in .
make[3]: Entering directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang/python'
ln -sf "../../../../src/data.h" .
ln -sf "../../conf/config.h" .
ln -sf "../../../../lang/python/src" gpg
touch copystamp
set -e ; for PYTHON in /usr/bin/python3.10; do \
CPP="gcc -E" \
CFLAGS="-g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wno-format-y2k -Wno-missing-field-initializers -Wno-sign-compare -Wno-format-zero-length -Wno-format-truncation -Wno-sizeof-pointer-div" \
srcdir="../../../../lang/python" \
top_builddir="../.." \
$PYTHON setup.py build --verbose --build-base="$(basename "${PYTHON}")-gpg" ; \
done
running build
Using gpgme.h from ../../src/gpgme.h
Please use --libdir=LIBDIR option or set PKG_CONFIG_LIBDIR
Or set PKG_CONFIG_PATH
Could not find gpg-error-config. Please install the libgpg-error development package.
make[3]: *** [Makefile:758: all-local] Error 1
make[3]: Leaving directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang/python'
make[2]: *** [Makefile:475: all-recursive] Error 1
make[2]: Leaving directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang/python'
make[1]: *** [Makefile:460: all-recursive] Error 1
make[1]: Leaving directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang'
make: *** [Makefile:538: all-recursive] Error 1
brad_b82 [ ~/gpgme-1.18.0/build1/build2 ]$ ls /usr/lib/ | grep gpg
libgpg-error.so
libgpg-error.so.0
libgpg-error.so.0.33.1
brad_b82 [ ~/gpgme-1.18.0/build1/build2 ]$ ls /usr/share/libgpg-error/
errorref.txt libgpg-error.so libgpg-error.so.0 libgpg-error.so.0.33.1
brad_b82 [ ~/gpgme-1.18.0/build1/build2 ]$
새로운 점을 지적하고 싶습니다. gpgme 바인딩의 "cl" 및 "cpp" 부분은 정상적으로 컴파일되는 것 같습니다. Python 바인딩을 컴파일하려고 시도할 때까지 차단됩니다.
또한 Python 부분에서 출력되는 모든 줄을 읽으려고 시도했는데 이상한 점을 발견했습니다...../../src/gpgme.h에서 gpgme.h를 사용하십시오.
내가 있는 디렉토리는 ~/gpgme-1.18.0이고 확장 후에는 /home/brad_b82/gpgme-1.18.0이므로 그러한 경로는 없습니다.
이 문제를 해결하기 위한 충분한 지식이 없기 때문에 간단히 시도해 보기로 결정했습니다.
cd ~
rm -Rf gpgme-1.18.0
tar -xvf gpgme-1.18.0.tar.bz2
cd gpgme-1.18.0
mkdir build1
cd build1
mkdir build2
cd build2
../../configure --prefix=/usr --libdir=/usr/lib --disable-gpg-test
내 생각 과정은 이제 ../../src/gpgme.h가 실제로 존재한다는 것입니다. 하지만 여전히 실패했습니다. 예, 추가하지 않고 구성 스크립트에 정확히 동일한 경로가 나타나더라도 기본을 다루기 위해 --libdir=/usr/lib를 포함했습니다.
답변1
이 질문에 대답하고 닫아야 합니다...
linuxfromscratch 개발자는 최근 이러한 문제를 해결하기 위해 gpgme 패치를 출시했습니다.
나는 프로그래머는 아니지만, 존재하지 않는 디렉토리에서 스크립트를 가져오려는 스크립트를 볼 때 적어도 올바른 방향으로 가고 있는 것은 확실합니다.
문제가 해결되었으며 케이스가 종료되었습니다.