gawk 및 gawkextlib

gawk 및 gawkextlib

내 시스템에 gawk버전 4.1.0이 설치되어 있습니다 (Slackware64-14.1). 설치하고 싶어요gawkextlib일부 기능에 액세스하려면 xml다음과 같이 하세요.

다음 README파일 에서 gawkextlib-0.4.9:

이 라이브러리를 사용하려면 먼저 공유 확장 라이브러리 지원을 포함하는 새 버전의 gawk를 빌드해야 합니다. gawk 4.1 이상을 사용하거나 다음 레시피를 사용하여 git 소스에서 빌드하세요.

git clone git://git.savannah.gnu.org/gawk.git cd gawk
./bootstrap.sh ./configure --prefix=/tmp/newgawk make && make check && make install

/tmp/newgawk에 빌드하고 설치한 후에는 다음과 같이 gawkextlib를 빌드할 수 있습니다.

Git 사용: git clone git://git.code.sf.net/p/gawkextlib/code gawkextlib cd gawkextlib ./update-autotools

또는 현재 자동 도구가 설치되어 있지 않은 경우 tarball을 사용하는 것이 더 쉬울 수 있습니다. tar xf gawkextlib-.tar.gz cd gawkextlib-

어느 쪽이든 빌드 단계는 동일합니다: ./configure --with-gawk=/tmp/newgawk --prefix=/tmp/newgawk make && make check && make install

다음과 같은 이유로 프로세스가 실패합니다.

/usr/bin/mkdir -p '/tmp/newgawk/lib/gawk' /bin/sh ../libtool
--mode=install ../build-aux/install-sh -c xml.la gd.la mpfr .la '/tmp/newgawk/lib/gawk' libtool: 설치: 오류: /usr/lib/gawk make[2]로 끝나지 않는 디렉토리에 `xml.la'를 설치할 수 없습니다:* [install-pkgextensionLTLIBRARIES] 오류 1

기존 거주지와 통합하고 싶기 때문에 큰 문제는 아닙니다 gawkextlib. 그렇게 할 때:gawk/usr

$ ./configure --prefix=/usr --with-gawk=/usr
$ make && make test 
# make install

모든 것이 잘 설치되었습니다.

# ls /usr/lib/libgawkextlib.*
/usr/lib/libgawkextlib.la  /usr/lib/libgawkextlib.so  /usr/lib/libgawkextlib.so.0  /usr/lib/libgawkextlib.so.0.0.0

하지만

$ awk -l xml
awk: fatal: can't open shared library `xml' for reading (No such file or directory)

gawk매뉴얼 페이지 에서 :

-엘

--load lib는 공유 라이브러리 lib를 로드합니다. 그러면 AWKLIBPATH 환경 변수를 사용하여 라이브러리를 검색합니다. 초기 검색이 실패하면 플랫폼의 기본 공유 라이브러리 접미사를 추가하여 다시 시도됩니다. 라이브러리 초기화 루틴의 이름은 dl_load()로 예상됩니다.

설정 후 AWKLIBPATH:

$ export AWKLIBPATH=/usr/lib
$ echo $AWKLIBPATH          
/usr/lib
$ awk -l xml
awk: fatal: can't open shared library `xml' for reading (No such file or directory)

awkAKA gawk공유 라이브러리를 찾을 수 없습니다. 내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

답변이 없어서 gawkextlib메일링리스트에 이런 질문을 올렸습니다. 프로젝트 작성자 중 한 명인 Andrew Schorr는 다음 명령 사용을 제안합니다.

./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info

몇 가지 중복된 옵션이 있으므로 이를 다음과 같이 간소화했습니다.

./configure  --datadir=/usr/share  --libdir=/usr/lib64

gawkextlib잘 설치되고 에서 작동합니다 . 대신 에 스크립트를 설치 하는 gawk옵션을 추가하는 것도 가능합니다 .--prefix=/usrxmlgawk/usr/bin/usr/local/bin

답변2

방금 이 문제에 직면했는데 James Brown의 의견이 정말 도움이 되었습니다. 다음 환경 변수를 추가해야 했습니다.

export AWKLIBPATH=/usr/local/lib/gawk/   # path where xml.so exists
export LD_LIBRARY_PATH=/usr/local/lib/   # path where libgawkextlib.so.0 exists

하지만 장기적으로는 루이의 대답이 더 낫다고 생각합니다. ~에 따르면Linux 문서화 프로젝트: "LD_LIBRARY_PATH는 개발 및 테스트에 편리하지만 일반 사용자가 정상적으로 사용할 수 있도록 설치 과정에서 수정하면 안 됩니다."

관련 정보